2017-11-04 265 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

就類型檢查和代碼生成而言,兩種方法都會產生完全相同的結果。我贊成靜態成員提供了兩個不是很有力的論據:

  • 這是做的最明顯的事情,它不需要語言(declaration merging)的高級部分知識理解代碼

  • 如果您需要創建並返回類定義的函數(as described for example here,模擬靜態通用成員或添加混入),則名稱空間將不起作用 - 函數內不能包含名稱空間。

相關問題