Ежедневные типы
Особое внимание
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";Также по мимо этого можно самому ставить 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">;- Взял у TypeScript Handbook
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",
};Другие типы
В разработке…