如何执行类型转换为undefined或null?

时间:2017-10-05 16:21:25

标签: typescript

我想强制一个对象超出范围,如

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

感谢。

1 个答案:

答案 0 :(得分:2)

为了允许将变量设置为undefined,即使它们未被声明为允许变量,也可以将它们转换为any。例如:

(<any>obj) = undefined

括号是必要的。或者我经常使用的东西:

(obj as any) = undefined;

如果您想要更具限制性,可以使用:

(obj as (undefined | typeA)) = undefined;

或:

(<undefined|typeA>obj) = undefined;