为什么将undefined用于boolean时TypeScript无法检测到错误?

时间:2018-09-27 10:24:38

标签: typescript

我有一个界面:

interface Example {
  foo: boolean
}

后来我使用类似的东西:

getFoo = (): Example => {foo: undefined}

没有ts错误。这是正常的?如果有效,在这种情况下使用undefined是一个好习惯吗?

1 个答案:

答案 0 :(得分:3)

如果您使用TypeScript(2.0+)编译器选项

,它将认为它是错误。

--strict-null-checks

在这种情况下,undefined和/或null仅在以联合类型明确声明时才允许使用:

interface Example {
  foo: boolean | null | undefined
}

可能出于向后兼容性问题,默认行为被决定为不使用严格检查。

更多信息在这里:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html


对于undefined的使用,我不能说这是好是坏做法(我认为需要更多上下文)。但是,您可以在?中使用可选的界面字段:

interface Example {
  foo?: boolean
}