TypeScript 5.8 satisfies vs as — объясните разницу на живом примере

Рейтинг: 20.8% · 3 голосов
Frontend и backend разработка: JavaScript, TypeScript, React, Next.js, Vue, Node.js, PHP, REST и GraphQL API, вёрстка HTML/CSS и современные веб-приложения.
Ответить
Аватара пользователя
olga8
Сообщения: 12
Зарегистрирован: 11 май 2026, 00:17

TypeScript 5.8 satisfies vs as — объясните разницу на живом примере

Сообщение olga8 »

Читаю код коллег и вижу что многие до сих пор пишут as Config везде где попало. Пробовал объяснить зачем satisfies — не очень доходит. Может кто сформулирует коротко и понятно: в каком случае satisfies лучше и когда всё-таки нужен as? Хочу на конкретном примере.
👍1 ❤️ 🔥 😄 🤔2
✔ Лучший ответ сформирован автоматически — alex42
Главное отличие — satisfies проверяет тип но не меняет его. То есть если написать const palette = { red: [255, 0, 0], blue: '#0000ff' } satisfies Record — TypeScript убедится что форма соответствует, но переменная palette останется с литеральным типом, и palette.red будет number[], а не string | number[]. С as вы просто говорите компилятору «верь мне», проверки нет.
Перейти к ответу →
Аватара пользователя
alex42
Сообщения: 5
Зарегистрирован: 24 май 2026, 14:07

Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере

Сообщение alex42 »

✔ Лучший ответ — сформирован автоматически
Главное отличие — satisfies проверяет тип но не меняет его. То есть если написать const palette = { red: [255, 0, 0], blue: '#0000ff' } satisfies Record<string, string | number[]> — TypeScript убедится что форма соответствует, но переменная palette останется с литеральным типом, и palette.red будет number[], а не string | number[]. С as вы просто говорите компилятору «верь мне», проверки нет.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
hunter22
Сообщения: 50
Зарегистрирован: 11 май 2026, 00:25

Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере

Сообщение hunter22 »

Короткий рецепт: as только когда вы точно знаете больше компилятора (например, после рантайм-проверки, или приводите к неизвестному типу из external lib). satisfies — когда хотите валидировать форму объекта и при этом сохранить точные типы полей для автодополнения. as отключает проверки, satisfies их добавляет.
👍3 ❤️1 🔥 😄 🤔
Аватара пользователя
coder_vlad
Сообщения: 72
Зарегистрирован: 11 май 2026, 01:57

Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере

Сообщение coder_vlad »

@alex42, Ещё важно: satisfies не работает как утверждение типа при передаче в функцию. Если функция ожидает Config, а вы передаёте литерал с satisfies — всё равно нужен явный тип на переменной или прямая передача. Это сбивает с толку поначалу.
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
tommee
Сообщения: 64
Зарегистрирован: 11 май 2026, 02:37

Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере

Сообщение tommee »

В 5.8 добавили ещё инференс для satisfies в дженерик-контекстах, раньше было несколько неочевидных кейсов где он не сужал как ожидалось. Теперь работает лучше с условными типами.
👍 ❤️ 🔥1 😄 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «Веб-разработка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость