TG Telegram Group & Channel
Node.JS [ru] | Серверный JavaScript | United States America (US)
Create: Update:

TypeScript - оператор satisfies

Алоха товарищи фронты! Я знаю что это не самая новая фича в TS, но я думаю что далеко не все знают о об этом операторе и уверен что многим будет это полезно.

И так что делает оператор:

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

Рассмотрим на примере:

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>

Надеюсь что было полезно. В общем удачи в экспериментах!

TypeScript - оператор satisfies

Алоха товарищи фронты! Я знаю что это не самая новая фича в TS, но я думаю что далеко не все знают о об этом операторе и уверен что многим будет это полезно.

И так что делает оператор:

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

Рассмотрим на примере:

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>

Надеюсь что было полезно. В общем удачи в экспериментах!
👍11


>>Click here to continue<<

Node.JS [ru] | Серверный JavaScript




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)