2016-04-07 1 views
1

私はダイナミックな名前を持つタイプスクリプトのタイプをどのように記述しますか?

などを供給し、実際のキーとDISPLAY_NAMEでkeydisplay_nameのための動的な名前を持っていると思いますが、次の行動

export class myData { 
    key   : string; 
    display_name : string; 
} 

を持つ型を記述します。以下は、有効なMYDATAタイプ

mySample1:myData = 
{ 
    myKey : 'myKeyValue' 
    myName : 'myNameValue' 
} 

mySample1:myData = 
{ 
    myKey2 : 'myKeyValue2' 
    myName2 : 'myNameValue2' 
} 

このための動機になり、私は、キーの数が同じで、各キーの値と同じタイプのオブジェクトのリストを返すAPIからのデータのたくさん持っているということです。しかし、それぞれのデータには異なるキー名があります。

angular2にComponentを作成したいのですが、特定の数のキーを持つオブジェクトのリストしか取らず、各キーの値は特定の型でなければなりません。

は、例えば、私は、これはtypescriptですで可能です私はComponent

var test = 
{ 
    myKey2 : 1 
    myName2 : 'myNameValue2' 
} 

または

var test2 = 
{ 
    myKey2 : 'myNameValue1' 
    myName2 : 'myNameValue2' 
    mySomeOtherKey : 'myNameValue10' 
} 

を取るにしたくないですか?可能であれば、これはタイプスクリプトでは良い考えですか?

答えて

1

例:以下は有効なmyDataタイプ

TypeScriptは構造化されています。あなたはこれらの両方が有効になりたいので:

mySample1:myData = 
{ 
    myKey : 'myKeyValue' 
    myName : 'myNameValue' 
} 

mySample1:myData = 
{ 
    myKey2 : 'myKeyValue2' 
    myName2 : 'myNameValue2' 
} 

あなたは簡単にこれらの2つのタイプの組合するmyDataを宣言することができます。

type MyData = { 
    myKey: string; 
    myName: string; 
} 
    | { 
     myKey2: string; 
     myName2: string; 
    } 

let mySample1: MyData = 
    { 
     myKey: 'myKeyValue', 
     myName: 'myNameValue' 
    } 

mySample1 = 
    { 
     myKey2: 'myKeyValue2', 
     myName2: 'myNameValue2' 
    } 
関連する問題