Почему в 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;
Другие вопросы по тегам