DevGang
Авторизоваться

Типы Utility Typescript

Привет народ! Как хорошо, что ты снова есть!

В этой небольшой статье я расскажу о служебных типах Typescript.

Служебные типы — это функции, доступные во всем машинописном коде. Итак, давайте посмотрим на некоторые из них:

Типы утилит для объектов

Сначала давайте определим некоторый объект как тип:

type User = {
  id: number;
  name: string;
  userName?: string;
}

Partial

Делает все свойства типа неопределенными.

Required

Делает все свойства требуемого типа.

type RequiredUser = Required<User>;

Omit

Мы можем опустить какое-то свойство типа и создать новый тип без него.

type OmitUserUsername = Omit<User, "userName">;

Мы можем передать типы union для большего количества свойств:

type OnlyId = Omit<User, "userName" | "name">;

Pick

В отличие от Omit, мы можем выбрать некоторое свойство типа.

type PickId = Pick<User, "id">;

И в качестве исключения мы можем передать типы объединения для получения большего количества свойств:

type WithoutUser = Pick<User, "id" | "userName">;

ReadOnly

Делает свойства доступными только для чтения.

type ReadOnlyUser = Readonly<User>;

Если мы попытаемся изменить какое-либо свойство, мы получим некоторую ошибку:

Служебные типы для типов союзов

Давайте создадим наш Union Type:

type Role = "admin" | "user" | "manager";

Exclude

Он удалит некоторые типы союзов

type NoUserRole = Exclude<Role, "user">;

Extract

Давайте создадим еще один тип объединения:

type RoleAttributes =
  | {
      role: "admin";
      permission: "all";
    }
  | {
      role: "user";
    }
  | {
      role: "manager";
    };


Теперь давайте извлечем admin, используя:

type AdminRole = Extract<RoleAttributes, { role: "admin" }>;

NonNullable

Давайте определим тип объединения, результатом которого может быть строка, null или undefined:

type MaybeString = string | null | undefined;
type NonNullableString = NonNullable<MaybeString>;

Типы Utility для функций

Давайте определим наш тип функции:

type myFunction = (a: number, b: number) => number;

ReturnType

Он вернет тип return функции

type ReturnValueFunction = ReturnType<myFunction>;

Parameters

Он вернет кортеж параметров функции:

type MyParameters = Parameters<myFunction>;

Awaited

Он вернет тип обещания

Давайте определим тип Promise

type PromiseUser= Promise<User>;
type Result = Awaited<PromiseUser>;

И все, ребята! Давайте посмотрим на вызов?

Определите тип результата этой асинхронной функции:

const getMyName = async () => {
  return {
    name: "Kevin",
  };
};

Как мы можем получить тип объекта, который является строкой?

Ответ:

type MyNameResult = Awaited<ReturnType<typeof getMyName>>;

Итак, спасибо, ребята, что зашли так далеко.

Вот и все, Typescript предлагает несколько служебных типов, которые могут помочь вам в разработке.

Источник:

#JavaScript #TypeScript
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу