2013-10-27 26 views
0

實施newable通用接口時,我有一個newable通用接口,看起來就像這樣:錯誤「類型的IFoo <T>需要構建簽名,但是Foo類型<T>缺少一個」以打字稿

interface IFoo<T> { 
    new (scope: T); 
} 

當我嘗試實現它的一類,像這樣:

class BaseFoo<T> implements IFoo<T> { 
    constructor(scope: T) { 

    } 
} 

我得到一個錯誤: 「類BaseFoo聲明接口IFoo的,但並沒有實現它: 類型‘的IFoo’需要construc t簽名,但輸入'BaseFoo'缺少一個。「

我在做什麼錯?

+0

可能的重複[如何使用構造簽名的打字稿接口工作?](http://stackoverflow.com/questions/13407036/how-does-typescript-interfaces-with-construct-signatures-work) –

回答

1

通常情況下,你不會在接口上放置構造細節。如何構建對象並不是其合同的一部分。

接口是某種行爲的承諾,所以你可以使用:

interface IFoo<T> { 
    getById (id: number) T; 
} 

我現在可以提供任何構造函數,因爲它可以執行我需要的操作接口的任何實現。

如果您需要關於該項目的公衆手柄,你可能會走這麼遠的把接口的屬性:

interface IFoo<T> { 
    scope: T; 
} 

可以在打字稿在接口上定義構造函數的原因是接口用於爲庫和外部代碼編寫聲明 - 因此能夠爲不能表示爲TypeScript類的接口編寫接口很有用。

相關問題