TypeScript Essentials

Урок 09 · 10 хв

any, unknown, never, as

Чотири слова, через які TS або допомагає, або бреше.

any вимикає перевірку. Одне any заражає все, чого торкається, — навіть поля, яких ти сам не чіпав. unknown — «не знаю, що це», доки не перевіриш: Handbook порівнює їх в any і далі в narrowing. never — «сюди виконання не має дійти». as — «повір мені».

JSON.parse у стандартній бібліотеці повертає any. Це історичний борг, а не рекомендація. Одразу клади результат в unknown і звужуй: type guard, zod або схема з бекенду. Інакше етикетка User нічого не варта.

any проти unknown
Свій type guard
AI

Можна спитати про це правило«as — останній resort»

satisfies: перевіряємо значення, але не губимо ключі

satisfies з'явився в TS 4.9 і робить дві речі: перевіряє значення за типом і залишає об'єкту його власні ключі. Анотація : Record<string, string> перевірку дає, але ключі стирає — після неї wide.bgg компілюється. Зворотне теж правда: satisfies сам по собі літерал не зберігає, palette.bg тут string. Потрібен саме "#0c0c0b" — пиши as const satisfies Record<string, string>. Детальніше — у release notes 4.9.

AI

Можна спитати про цей пункт«Суть уроку»

Перевірка

Закріпи, поки не пішов далі

  1. 1. Який тип у JSON.parse(raw)?

  2. 2. Що робить value as User?