Поиск по сайту
Ctrl + K
Вопросы по TS

Как можно использовать сопоставленные типы в TypeScript?

Сопоставленные типы (mapped types) в TypeScript позволяют создавать новые типы, основываясь на существующих. Это мощная фича, которая помогает уменьшить дублирование кода и делает его более читаемым и поддерживаемым.

Основы сопоставленных типов

Сопоставленные типы позволяют вам применять некоторую трансформацию к свойствам другого типа. Например, если у вас есть интерфейс с некоторыми свойствами, вы можете создать новый тип, где все свойства будут обязательными, или наоборот — только некоторые из них.

Пример 1: Простой сопоставленный тип

Предположим, у нас есть следующий интерфейс:

interface User {
    id: number;
    name: string;
    email: string;
}

Мы можем создать сопоставленный тип, который сделает все свойства интерфейса User необязательными:

type Partial<T> = {
    [K in keyof T]?: T[K];
};

type PartialUser = Partial<User>;

Теперь PartialUser будет иметь все свойства User, но они будут необязательными. Пример использования:

const user: PartialUser = {
    id: 1,
};

Пример 2: Изменение типов свойств

Мы можем не только делать свойства необязательными, но и изменять их типы. Например, создадим тип, где все свойства из User будут строками:

type Stringify<T> = {
    [K in keyof T]: string;
};

type StringifiedUser = Stringify<User>;

Теперь StringifiedUser имеет следующую форму:

const user: StringifiedUser = {
    id: "1", // теперь строка
    name: "Иван",
    email: "ivan@example.com",
};

Пример 3: Комбинирование сопоставленных типов

Вы также можете комбинировать сопоставленные типы для создания более сложных типов. Например, предположим, что вы хотите создать тип, в котором все поля из интерфейса User будут просто строками или будут необязательными:

type Conditional<T> = {
    [K in keyof T]: string | undefined;
};

type ConditionalUser = Conditional<User>;

Заключение

Сопоставленные типы — это мощный инструмент в TypeScript, который позволяет создавать новые типы с минимальными усилиями. Они помогают не только улучшить читаемость вашего кода, но и обеспечить более строгую типизацию, что особенно важно в больших проектах. Используйте их, чтобы уменьшить дублирование и повысить эффективность!

Практика — лучший способ изучения, так что попробуйте создать свои собственные сопоставленные типы и посмотрите, как они могут помочь вам в проектах.

Содержание:
Редактировать