我想强制一个对象超出范围,如
let obj: typeA = aTypeAobj;
function del(obj: typeA): void {
obj = undefined;
}
但strict
模式下的Typescript不允许我这样做。
我能做到,
let obj: typeA = aTypeAobj;
function del(obj: typeA | undefined): void {
obj = undefined;
}
但在这种情况下,我也可以传递任何undefined
类型。
有没有办法在函数体内进行类型转换,如
let obj: typeA = aTypeAobj;
function del(obj: typeA): void {
obj<typeA | undefined> = undefined; // this doesn't work but I'm asking something like this
}
然后,我可以利用ts阻止任何undefined
类型作为del()
的参数,并将typeA
对象分配给undefined
。
感谢。
答案 0 :(得分:2)
为了允许将变量设置为undefined
,即使它们未被声明为允许变量,也可以将它们转换为any
。例如:
(<any>obj) = undefined
括号是必要的。或者我经常使用的东西:
(obj as any) = undefined;
如果您想要更具限制性,可以使用:
(obj as (undefined | typeA)) = undefined;
或:
(<undefined|typeA>obj) = undefined;