2017-10-05 8 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型を渡すことができます。私はdel()のパラメータとして任意のundefinedタイプをブロックTSの利点を得るだけでなく、undefinedtypeAオブジェクトを割り当てることができ

その後
let obj: typeA = aTypeAobj; 

function del(obj: typeA): void { 
    obj<typeA | undefined> = undefined; // this doesn't work but I'm asking something like this 
} 

のような関数本体の内部キャストタイプにどのような方法があり、 。

ありがとうございました。

答えて

2

許可変数として宣言されていなくても、変数をundefinedにするには、anyにキャストできます。例えば:

(<any>obj) = undefined 

括弧が必要です。それとも私が通常使用する:あなたはより限定的なものにしたい場合は

(obj as any) = undefined; 

、あなたが使用することができます。

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

か:

(<undefined|typeA>obj) = undefined; 
関連する問題