Почему в TypeScript можно объявить переменную типа anyTextString?
Зачем tsc
не жалуется на эту строку кода:
let a: 'my text string';
и позволяет a
быть типом 'my text string'
?
И... Разве это не подвержено ошибкам, если, скажем, кто-то использует неявный вывод типа и просто помещает ':
' вместо '='
?!
1 ответ
Решение
Это буквальный тип. Документация здесь. Пример:
type Color = 'blue' | 'red'
function showColor(c: Color) {
console.log(c)
}
showColor('blue') // OK
showColor('other') // Error
Примечание: начиная с TypeScript 2.0, литеральные типы расширяются до чисел и логических значений (не только строк). Затем, с TypeScript 2.1, литеральные типы лучше выводятся.
И... Разве это не подвержено ошибкам, если, скажем, кто-то использует неявный вывод типа и просто помещает
':
' вместо'='
?!
В TypeScript требуется определить :
, Следующий код:
let a: 'my text string';
... компилируется в (здесь с целью ES6):
let a;