2016-04-18 19 views
1

私は、次のしている:インターフェイスを実装するために私には見えますインターフェイスとゲッターセッター

interface IEngine { 
    type():string; 
    type(type:string):void; 
} 

class Engine implements IEngine { 
    private _type: string; 

    get type():string { 
     return this._type; 
    } 

    set type(type:string) { 
     this._type = type; 
    } 


} 

var engine = new Engine(); 
engine.type = 'foo'; 

、しかし、TSCを実行すると例外がスローされます:

F:\>tsc interfaces.ts --target "es5" 
interfaces.ts(11,7): error TS2420: Class 'Engine' incorrectly implements interface 'IEngine'. 
    Types of property 'type' are incompatible. 
    Type 'string' is not assignable to type '{(): string; (type: string): void; }'. 

答えて

5

あなたはとても、プロパティを実装していますこれは次のようになります:

interface IEngine { 
    type:string; 
} 
3

Typescriptのインタフェースは、 "shapあなたが望むオブジェクトの "e"あなたの例では、typeというプロパティを持つオブジェクトを探しています。これは、指定することによって行うことができます。

interface IEngine { 
    type: string; 
} 

ゲッターとセッターは、その後、このようなインターフェースあなたの質問でEngineタイプを実装するオブジェクトで定義されている実装の詳細です。

関連する問題