Что нового в TypeScript 4.9 - оператор satisfies
Алоха товарищи фронты! Я знаю что TS 4.9 это не самая новая версия так как недавно анонсировали TS 5.0. Но я думаю что далеко не все знают о том что нового было в версии 4.9 и уверен что многим будет это полезно.
И так что делает новый оператор:
Позволяет нам проверить соответствие выражения некоторому типу, не меняя сам тип. Это помогает при работе с объектами со смешанными типами данных.
Рассмотрим на примере:
}
❗ Объект
Вот тут-то нам и поможет оператор
Также оператор
Надеюсь что было полезно. В общем удачи в экспериментах!
Алоха товарищи фронты! Я знаю что TS 4.9 это не самая новая версия так как недавно анонсировали TS 5.0. Но я думаю что далеко не все знают о том что нового было в версии 4.9 и уверен что многим будет это полезно.
И так что делает новый оператор:
Позволяет нам проверить соответствие выражения некоторому типу, не меняя сам тип. Это помогает при работе с объектами со смешанными типами данных.
Рассмотрим на примере:
type FormFields = "name" | "surname" | "age";const data: Record<FormFields, number | string> = {name: "name",surname: "surname",age: 21,}
const newAge = data.age * 2;const nameUpperCase = data.name.toUpperCase();❗ Объект
data имеет как числовые, так и строковые значения, поэтому при работе с этим объектом мы получаем следующие ошибки:The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.Property 'toUpperCase' does not exist on type 'string | number'.Property 'toUpperCase' does not exist on type 'number'.Вот тут-то нам и поможет оператор
satisfies.type FormFields = "name" | "surname" | "age";const data = { name: "name", surname: "surname", age: 21,} satisfies Record<FormFields, string | number>const newAge = data.age * 2;const nameUpperCase = data.name.toUpperCase();Также оператор
satisfies можно использовать для отлова некоторых ошибок. Например, для проверки объектов на наличие ключей, соответствующих заданному типу:type FormFields = "name" | "surname" | "age";const data = { name: "name", surname: "surname", age: 21, passport: {}} satisfies Record<FormFields, string | number>Надеюсь что было полезно. В общем удачи в экспериментах!
👍9👎8❤2
👥Сделали библиотеку компонентов, но пришлось переделывать. Почему так вышло и чем дело кончилось
В этой статье хочу рассказать о том, как у нас в возникла необходимость в создании библиотеки компонентов, почему первое решение не сработало, какие выводы мы сделали и чем закончился наш проект библиотеки.
Читать...
В этой статье хочу рассказать о том, как у нас в возникла необходимость в создании библиотеки компонентов, почему первое решение не сработало, какие выводы мы сделали и чем закончился наш проект библиотеки.
Читать...
🔥5