TypeScript 5.8 satisfies vs as — объясните разницу на живом примере
Рейтинг: 20.8% · 3 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
TypeScript 5.8 satisfies vs as — объясните разницу на живом примере
Читаю код коллег и вижу что многие до сих пор пишут as Config везде где попало. Пробовал объяснить зачем satisfies — не очень доходит. Может кто сформулирует коротко и понятно: в каком случае satisfies лучше и когда всё-таки нужен as? Хочу на конкретном примере.
✔ Лучший ответ сформирован автоматически — alex42
Главное отличие — satisfies проверяет тип но не меняет его. То есть если написать const palette = { red: [255, 0, 0], blue: '#0000ff' } satisfies Record — TypeScript убедится что форма соответствует, но переменная palette останется с литеральным типом, и palette.red будет number[], а не string | number[]. С as вы просто говорите компилятору «верь мне», проверки нет.
Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере
✔ Лучший ответ — сформирован автоматически
Главное отличие — satisfies проверяет тип но не меняет его. То есть если написать const palette = { red: [255, 0, 0], blue: '#0000ff' } satisfies Record<string, string | number[]> — TypeScript убедится что форма соответствует, но переменная palette останется с литеральным типом, и palette.red будет number[], а не string | number[]. С as вы просто говорите компилятору «верь мне», проверки нет.
Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере
Короткий рецепт: as только когда вы точно знаете больше компилятора (например, после рантайм-проверки, или приводите к неизвестному типу из external lib). satisfies — когда хотите валидировать форму объекта и при этом сохранить точные типы полей для автодополнения. as отключает проверки, satisfies их добавляет.
- coder_vlad
- Сообщения: 72
- Зарегистрирован: 11 май 2026, 01:57
Re: TypeScript 5.8 satisfies vs as — объясните разницу на живом примере
@alex42, Ещё важно: satisfies не работает как утверждение типа при передаче в функцию. Если функция ожидает Config, а вы передаёте литерал с satisfies — всё равно нужен явный тип на переменной или прямая передача. Это сбивает с толку поначалу.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
-
-
- TypeScript нативный компилятор на Go (tsc-go) — ждём 10x или рано радоваться?
10 ответов · 1018 просмотров
-
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость