Что такое литеральные типы в TypeScript и как работает расширение типов (widening)?
СобеседованиеСистема типов
- Литеральный тип — конкретное значение как тип:
"hello", 42, true
const x = "hello" → тип "hello" (литеральный, без расширения)
let y = "hello" → тип string (расширенный, т.к. можно переприсвоить)
as const — предотвращает расширение для объектов и массивов, делает глубокий readonly
- Литеральные типы часто используются как дискриминанты в union types
- Template Literal Types:
\`hello-${string}\`