【发布时间】:2021-10-25 16:03:28
【问题描述】:
假设我有一个自定义类;
interface IMyType {
foo: string
bar?: IChild
}
现在我想选择性地实例化该类型:
var myType: IMyType = null
if (something) { myType = somethingNotNull }
这会导致;
TS2322:类型“null”不可分配给类型“IMyType”。
所以现在我可以这样做了:
var myType: IMyType | null = null
这似乎可行,但现在我已经使用“?”声明了我的选项。在类声明中,并在其他地方使用“| null”,这看起来真的很丑/乱/不正确。在打字稿中实现一致的可选行为的正确方法是什么?
【问题讨论】:
-
写
var myType: IMyType | null是使它可以为空的正确方法。当它在另一个地方也可以是null时,它必须在那里以同样的方式声明。您可以进行空检查以摆脱其他地方的可为空类型 -
您可以像
type Nullable<T> = T | null;那样使用它的可读性更高的版本,并像这样var myType: Nullable<IMyType> = null那样定义您的变量 -
我认为有一个 tslint 选项可以允许这样做。我的 Angular 项目至少允许这样做,但我不知道是什么配置负责允许它。
标签: typescript