Skip to Content
Начало типизацииЕжедневные типы

Ежедневные типы

Особое внимание

any/unknown

Данные тип используется для неопределенного типа (Когда тип может быть любой). Обычно использование типа any не приветствуется в данной языке и на него жалуются некоторые форматировщики по типу eslint. Однако данные тип (типы: any/unknown) можно использовать, когда тип и правда может быть любым, или когда излишняя типизация не к месту. Желательно не использовать данный тип, переменную с данным типом можно переопределить на любое значение, что может привести к непредвиденным ошибкам. Используйте тип any/unknown по назначению или тогда, когда знаете, что делаете.

Обычные типы

  • string - тип строки ("Привет", "Привет" и другие).
  • number - числовой тип (1, 2, 3.52, -23 и другие).
  • bigint - числовой тип (позволяет работать с более большими числами) (1n, 23n, 123835n, 1n << 2n, 1n <<< 2n и другие).
  • boolean - тип булево значения (false или true)
  • …возможно тут ещё что-то появится… автору в голову ничего не лезет…

”Усиленная” типизация

Желательно просмотреть узнать дженерики Прочитайте также информацию то TypeScript  Рассмотрим типы, которые встроены в TypeScript по умолчанию:

Awaited<Type>

Тип, который может использоваться совместно с Promise. Думаю, что все понимают, как он работает

// Вам лучше не видеть реализацию этого типа... // Тут используется много всего, что мы пока что не знаем, то обязательно к этому вернёмся type <> = extends null | undefined ? : extends object & { (: infer , ...: infer ): any; } ? extends (: infer , ...: infer ) => any ? <> : never : ;
type = <<string>>; type = <<<number>>>; type = <boolean | <number>>; type = <<{ : <string>, : string }>>

В принципе, Awaited, думаю, понятен и без объяснения, он просто убирает Promise с типов, буквально Promise наоборот

Partial<Type>

Тип для создания необязательных объектов. Он делаем все ключи в объекте необязательными. Обычно он используется для обновления какой-то информации:

// Сам тип выглядит так type <> = { [ in keyof ]?: [] | undefined; };
interface User { : string; : string; }; const = (: User, : <User>): User => { return { ..., ... }; }; const : User = { : "FOCKUSTY", : "" }; const = (, { : "CEO, Backend-developer" });

Required<Type>

Противоположный тип к Partial.

type <> = { [ in keyof ]-?: []; }
interface ICreateUser { : string; ?: string }; const = (: ICreateUser): <ICreateUser> => { /* some code */ return {} as <ICreateUser> }; const = ({ : "FOCKUSTY" });

Readonly<Type>

type <> = { readonly [ in keyof ]: []; };
type = { : string : string : string : string } const : = { : "Some name", : "Nikon D3500", : new ().(), : "Russian, Ufa" }; // Плохо, потому что можно изменять значения
type = { : string : string : string : string } const : <> = { : "Some name", : "Nikon D3500", : new ().(), : "Russian, Ufa" }; .name = "New name";
Cannot assign to 'name' because it is a read-only property.

Также по мимо этого можно самому ставить readonly поля (см. типизация классов)

Record<Keys, Type>

Наверное один из самых полезных типов (для создания типизированных объектов)

Возможно не совсем понятно, что он делает, так что сейчас я поясню: он каждому передаваемому ключу выставляет переданные ему тип:

type < extends keyof any, > = { [ in ]: }
type = "ru" | "en" | "es"; type = | "title" | "description"; type = <, string>; type = <, >; const : = { : { : "Заголовок", : "Описание" }, : { : "Title", : "Description" }, : { : "Título", : "Descripción" } }; const = < extends , extends >(: , : ): [][] => { return [][]; };

Pick<Type, Keys>

Буквально: мы берем определенные поля в объекте по ключам

type <, extends keyof > = { [ in ]: []; };
interface User { : string; : string; : string; ?: string; } type = <User, "name">; const : = { : "FOCKUSTY" };

Exluce<Type, ExcludedMembers>

Довольно понятное и простое, хочу сказать, что можем применяться для любых типов (вот это да)

type <, > = extends ? never : ;
type = | "date" | "name" | "dir" | "root" type = | "dir" | "root" type = <, >;
type <> = | []; type <> = <<>, >; declare const : <"hello">;
type = | { : "circle"; : number } | { : "square"; : number } | { : "triangle"; : number; : number }; type = <, { : "circle" }>

Omit<Type, Keys>

Противоположное Pick: мы не берём типы, а их исключаем

type <, extends keyof any> = { // Хотя было бы лучше использовать keyof T [ in <keyof , >]: [] };
interface User { : string; : string; : string; ?: string; } type = <User, "created_at"|"updated_at">; const : = { : "123", : "FOCKUSTY", };

Другие типы

В разработке…

Last updated on