2017-10-05 51 views
0

我想強制對象出像範圍,如何將類型轉換爲undefined或null?

let obj: typeA = aTypeAobj; 

function del(obj: typeA): void { 
    obj = undefined; 
} 

但在strict模式打字稿不允許我這樣做。

我可以不喜歡,

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

謝謝。

回答

2

爲了允許將變量設置爲undefined,即使它們未被聲明爲允許它,也可以將它們轉換爲any。例如:

(<any>obj) = undefined 

括號是必要的。或者有什麼我通常使用:

(obj as any) = undefined; 

如果你想更嚴格,你可以使用:

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

或:

(<undefined|typeA>obj) = undefined; 
相關問題