Typescript 条件类型似乎允许 null
Typescript conditional types seem to allow null
给定条件类型的示例:
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 已经理解了正确的类型。
为什么我用这种方式分配时没有错误?我该如何解决?
只需启用 compiler option --strict
或 --strictNullChecks
。
给定条件类型的示例:
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 已经理解了正确的类型。
为什么我用这种方式分配时没有错误?我该如何解决?
只需启用 compiler option --strict
或 --strictNullChecks
。