Что нового в 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