2015-11-05 18 views
8

TypeScriptでES2015モジュールの構文を使用していくつかのクラスを作成しようとしています。各クラスは、.d.tsファイル内にインタフェースを実装しています。TypeScript TS2322: 'typeof Foo'の型が 'IFoo'型に割り当てられません

ここに問題のMWEがあります。

interface IBar { 
    foo: IFoo; 
    // ... 
} 

interface IFoo { 
    someFunction(): void; 
    // ... 
} 

私の輸出は次のとおりです:.d.tsファイルで

私が持っている

// file: foo.ts 
export default class Foo implements IFoo { 
    someFunction(): void {} 
    // ... 
} 
// no errors yet. 

そして、私のインポートは、次のとおりです。

import Foo from "./foo"; 

export class Bar implements IBar { 
    foo: IFoo = Foo; 
} 

エラーはここにある:

error TS2322: Type 'typeof Foo' is not assignable to type 'IFoo'. 
Property 'someFunction' is missing in type 'typeof Foo'. 

ここにアイデアはありますか?

答えて

11

あなたはクラスにIFooからFooを割り当てているfoo: IFoo = Foo;言います。しかし、インターフェイスIFooは、そのクラスのインスタンスによって実装されています。あなたはする必要があります:

foo: IFoo = new Foo; 
+2

ルーキー間違いは、実際のJSの問題だったときに私はタイプスクリプトで何か間違っていると思った...ありがとう。 – azz

+0

乾杯。もちろん、回答は – basarat

+0

としてください。それで、あなたは受け入れる前に10分待つ。 – azz