2017-11-04 15 views
1

TypeScriptでは、クラス以外の変数をクラスと同じ名前の名前空間に分けています。たとえば:TypeScript静的メンバーとクラス名を持つ名前空間

class Person 
{ 
    age: number; 

    constructor(age: number) 
    { 
     this.age = age; 
    } 
} 

namespace Person 
{ 
    export let numberOfFingers: number = 10; 
} 

export default Person; 

これと対照的に:

class Person 
{ 
    static numberOfFingers: number = 10; 

    age: number; 

    constructor(age: number) 
    { 
     this.age = age; 
    } 
} 

export default Person; 

は、これらのメソッドのいずれかに何らかの利点がありますか?

答えて

1

typecheckingとコード生成に関する限り、どちらのメソッドもまったく同じ結果を生成します。私は、静的メンバーの賛成で2ない非常に強力な引数を提供することができます:

  • それはそれが理解するためのコードを、言語(declaration merging)の高度な部品の知識を必要としない、行うための最も明白なことだ

  • クラス定義を作成して返す関数(静的な汎用メンバをシミュレートするため、またはmixinを追加するためにas described for example here)が必要な場合、名前空間は機能しません。関数内に名前空間を持つことはできません。

関連する問題