Учитывая этот пример условного типа:
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 правильно понял тип.
Почему тогда я не получаю ошибок при назначении таким образом? Как я могу это исправить?
Просто включите опция компилятора--strict
или --strictNullChecks
.
@RobbyCornelissen это не имеет значения, это иллюстрация ... Здесь предполагалось показать пример типа объединения. Может быть enum или любой другой тип объединения, ничего не изменит, это не про
number | string
...