2017-09-13 6 views
0

私は、オブジェクトと、そのような定義ではtypecriptでオブジェクト型インターフェイスを定義するにはどうすればよいですか?

export interface example { 
    code: string; 
    category : { 
    name : string, 
    reference: string, 
    sequence : number 
    }; 
} 

など、さまざまなタイプ とのインタフェースを定義したい、そこには問題はありませんが、

ex = {} as example; 
ex.category.name ='electric; 

のように呼び出した後、これは動作しないと、エラーの下

が発生

ERROR Error: Uncaught (in promise): TypeError: Cannot set property 'name' of undefined TypeError: Cannot set property 'name' of undefined

似たような主題がいくつかありますが、正確に関連していません。 (How to define object in type script interfaceまたはHow can I define the types of an object variable in Typescript?

解決策を探していただきありがとうございます。

+0

を:

あなたのオブジェクト内にもcategoryプロパティを初期化することができます= {カテゴリ:{name: 'electric'}}; 'インターフェイスはちょうど*シェイプを記述しますが、あなたは正しいオブジェクトを構築しなければなりません(またはコンストラクタを使ってクラスを書くか、デフォルト値を提供する必要があります)。 – jonrsharpe

+0

質問に間違いはありますか? –

答えて

0

Type assertionsは、実行時にオブジェクトが間違いなくあなたが主張している形状になることを意味しません。任意のオブジェクトが任意の型であることをアサートすることはできますが、実行時の型が一致しないと実行時には失敗します。

例では、exオブジェクトにはcategoryというプロパティがないため、実行時にundefinedとなり、エラーにつながります。 `、または単にストレートEXを聞かせて`に行く; `ex.category = {}:あなたはまだ最初のレベルのオブジェクトを作成する必要が

var ex = { 
    category: {} // or you can initialize `name` here as well 
} as example; 
ex.category.name = 'electric'; 
関連する問題