是否可以在TypeScript中展开可选/可为空的值?
我习惯于Swifts的可选值,并看到TypeScript具有类似的功能。对于属性的惰性初始化,最好有一个可是否可以在TypeScript中展开可选/可为空的值?,typescript,lazy-initialization,Typescript,Lazy Initialization,我习惯于Swifts的可选值,并看到TypeScript具有类似的功能。对于属性的惰性初始化,最好有一个可null的私有属性和一个publicgetter,在请求时初始化值 class Test { private _bar: object:null = null; get bar(): object { if (_bar === null) { _bar = { }; } return _bar; } } 我知
null
的私有属性和一个public
getter,在请求时初始化值
class Test {
private _bar: object:null = null;
get bar(): object {
if (_bar === null) {
_bar = { };
}
return _bar;
}
}
我知道我可以使用undefined来实现这一点,并从私有成员中删除可为null的类型信息,但我想知道是否有一种方法可以做到这一点,而不必将该null永远带到属性中。我要从一个我想处理空值的地方到一个我不再希望强迫任何人处理空值的边界。你可以在TypeScript中这样做:
class Test {
private _bar?: object;
get bar(): object {
if (this._bar === undefined) {
this._bar = { };
}
return this._bar;
}
}
在TypeScript中,通常使用undefined而不是null更为惯用。是的,这是我自己目前所做的,但我想还是有一些情况下,
null
更合适或更为有效,您希望将其移动到某个点不再为null的值中。不确定您的意思,你能举个例子吗如果您想使用null而不是undefined,您也可以这样做。如果你不想把这个值标记为可选的,那么你需要给它一些值。所以在Swift中,如果一个值是可选的,但是我想打开它,这样我就知道从现在起它不再是可选的,我可以做如果让nonOptVal=optVal{}
或者我可以使用保护让nonOptVal=optVal else{throw err}
然后数据存储在非可选变量nonOptVal
中,假设该值存在,我可以使用它。我想知道Typescript中是否有一个等价物。到目前为止,我唯一的解决方法是将类型强制转换为不包含|undefined
或|null
@Kevin这就是我一直在做的:如果((value=this.optionalValue)!=undefined){console.log(value+“有效”)