2017-12-27 30 views
17

せずにクラスを使用して、私は(すぐに)、次の構文を見つけましたか? 「aHero」のタイプをチェックすると、それは「ヒーロー」タイプではなく一般的なオブジェクトに過ぎません。コンストラクタを使用してオブジェクトを初期化するだけの方が良いでしょうか?:活字体は、角度のウェブサイト上で「ツアー英雄の」チュートリアルでの作業中に、コンストラクタ

class Hero { 
    constructor(id: number, name: string) {} 
} 
+13

良い質問です。答えは、チュートリアルが悪い習慣を促進することです。 'Hero'は' interface 'でなければなりません。 –

+2

Todd Mottoには、相違点を説明する[偉大な記事](https://toddmotto.com/classes-vs-interfaces-in-typescript)があります。なぜ 'interface'対' class'を使うのか – mhodges

+0

あなたは参照を追加できますか?このコードのセクションに? –

答えて

2

クラスを使用する方法として使用できます。それで、Heroがインターフェイスかクラスかどうかは、それを型として使用しているので重要ではありません。

class Hero { id: number; name: string } 

または

interface Hero { id: number; name: string } 

以下は、ヒーローはクラスまたはインタフェースが

let hero: Hero = { id: 1, name: 'me' } 
interfaceclass分化が interfaceがあなたのためだけである

、それはしないであるかどうかではないの懸念を行いJavascriptに変換することはできません。 A classがあり、newinterfaceではありません。

コンストラクターまたはコンストラクターで、newの場合はinstanceofです。あなたがキーワードnewとヒーローのインスタンスを作成しましたので、この

let hero = new Hero(); 

で再びそれを試してみてくださいあなたのinstanceofログがtrueになります。

関連する問題