TGViewer
Настоящий JavaScript Настоящий JavaScript @true_js · 5.86K subscribers
Post #3247 1.21K
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>

Надеюсь что было полезно. В общем удачи в экспериментах!
  • 👍 5
  • ❤ 1
More from @true_js
  1. Oct 7, 2026Юзер залил ролик на 37 метров и получил в ответ: «Не удалось определить длительность видео…
  2. Oct 7, 2026Чё за фигня: почему разработчики игнорируют платформу? Свежий выпуск #805 JavaScript Weekl…
  3. Oct 6, 2026Кедр: загоняем SACD ISO в FLAC — и всё это собрано в Cursor Понадобился мне инструмент под…
  4. Oct 6, 2026Летом автор выкатил энциклопедию по истории искусства — artatlas.site. Внутри 184 картины,…
  5. Oct 5, 2026BMC и разные экраны: как мы собрали адаптив, когда готовых макетов не было На связи Настя,…
  6. Oct 5, 2026Возводим стены в SCAD++ на турбо-скорости В этом материале мы чуток встряхнём SCAD++ и вык…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →