Skip to content

Утилітарні типи TypeScript пояснені

Вбудовані утилітарні типи TypeScript і ключові слова, що ходять з ними поруч, згруповані за завданням: переформувати об'єкт, відфільтрувати об'єднання, описати функцію, перетворити літеральний рядок і захопити типи зі значень. Кожен рядок показує тип і справжній аліас, який ви написали б власноруч.

Утилітарні типи — це узагальнені функції для типів: вони беруть один чи два типи і повертають новий, тож вам не доводиться виписувати кожну форму вручну. Вони сяють на похідних типах, коли джерело істини — інший тип або значення, і ви хочете, щоб ваші типи стежили за ним автоматично. Простіше керуватися правилом: породжуйте, а не дублюйте — змінили джерело, і похідний тип іде слідом.

Довідкова таблиця · 22 записи
22 of 22 rows
Форма об'єкта
T, у якого кожна властивість стала необов'язковою.type Update = Partial<User>
T, у якого кожна властивість стала обов'язковою.type Strict = Required<Opts>
T, у якого кожна властивість стала лише для читання.type Frozen = Readonly<User>
T, у якого залишили лише ключі з K.type Preview = Pick<User, "id" | "name">
T, у якого вилучили ключі з K.type SafeUser = Omit<User, "password">
Об'єкт, чиї ключі — це K, а значення — V.type Scores = Record<string, number>
Фільтрація об'єднань
Об'єднання U, з якого вилучено члени, що можна призначити до X.type NoNull = Exclude<T, null>
Члени U, які можна призначити до X.type OnlyStr = Extract<T, string>
T, з якого вилучено null і undefined.type Def = NonNullable<T>
Типи функцій
Кортеж типів параметрів функції F.type P = Parameters<typeof fn>
Тип, який повертає функція F.type R = ReturnType<typeof fn>
Кортеж типів параметрів конструктора F.type C = ConstructorParameters<typeof Date>
Тип екземпляра, який породжує конструктор F.type D = InstanceType<typeof Date>
Тип, до якого Promise розв'язується, рекурсивно.type Data = Awaited<Promise<User>>
Перетворення літеральних рядків
Літеральний рядок S у верхньому регістрі.type A = Uppercase<"abc"> // "ABC"
Літеральний рядок S у нижньому регістрі.type B = Lowercase<"ABC"> // "abc"
S із першим символом у верхньому регістрі.type C = Capitalize<"abc"> // "Abc"
S із першим символом у нижньому регістрі.type D = Uncapitalize<"Abc"> // "aBc"
Пов'язані ключові слова
Об'єднання ключів властивостей об'єктного типу T.type K = keyof User
Тип значення, без повторного виписування.type Config = typeof defaults
Захоплює тип усередині умовного типу для повторного використання.type El<T> = T extends Array<infer I> ? I : never
Обирає тип X або Y залежно від того, чи можна T призначити до U.type IsStr<T> = T extends string ? true : false