Тот самый канал по JavaScript.
Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin
Post #3277
1.12K
НА @true_js
Showing posts older than #3278 · Back to latest

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>
