#typescript #conditional-types
#typescript #условные типы
Вопрос:
Учитывая этот пример условного типа:
type MyType = 'Number' | 'String';
interface Test<T extends MyType> {
bar: T extends 'Number' ? 25 : '25'
}
Если я попытаюсь:
const test: Test<'Number'> = {bar: null}
Я не получаю жалоб, похоже, это допустимый Typescript. Однако при наведении курсора bar
я получаю всплывающее сообщение (property) Test<"Number">.bar: 25
, которое, по-видимому, означает, что TS правильно понял тип.
Тогда почему я не получаю присвоение ошибки таким образом? Как я могу это исправить?
Комментарии:
1. @RobbyCornelissen это не имеет значения, это иллюстрация… Здесь предполагалось показать примерный тип объединения. Может быть, перечисление или любой другой тип объединения ничего не изменит, речь не о
number | string
…
Ответ №1:
Просто включите опцию компилятора --strict
или --strictNullChecks
.