2017-09-03 6 views
1

Typescriptでは、アサーションをどのようにして非構造化に使用できますか?アサーションを構造の破壊に使用するには?

type StringOrNumber = string | number 

const obj = { 
    foo: 123 as StringOrNumber 
} 

const { foo } = obj 

私はconstのfoonumber型アサーションを追加するための便利な方法を見つけることができませんでした。 2つの回避策は以下のとおりです。

// A: 
const { foo } = obj as { foo: number } 

// B: 
const { foo: foo2 } = obj 

const foo = <number>foo2 

最初はその型がネストして複雑にされたときにobjのタイプを書き換えるための負担となっています。 2番目は奇妙に思える。私は次のような構文を想定しています:

const { <number>foo } = obj 

は絶対にネストされた、複雑な破壊から型を主張する私たちを助けることができます。

+1

'const {foo:number} = obj;'? – jonrsharpe

+1

これはうまくいかず、 'foo'の値をとり、変数' number'に代入します –

答えて

1

documentationによれば、破壊するときにタイプを正しく鋳造する方法はありません。どうやら、あなたが提供したもの以外の回避策はありません。

関連する問題