我有一个界面:
interface Example {
foo: boolean
}
后来我使用类似的东西:
getFoo = (): Example => {foo: undefined}
没有ts
错误。这是正常的?如果有效,在这种情况下使用undefined
是一个好习惯吗?
答案 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
}