首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >接口和Getters\Setters

接口和Getters\Setters
EN

Stack Overflow用户
提问于 2016-04-18 18:38:52
回答 2查看 107关注 0票数 1

我有以下几点:

代码语言:javascript
运行
复制
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会抛出一个异常:

代码语言:javascript
运行
复制
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; }'.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-18 18:47:48

您正在实现属性,因此在接口中应该如下所示:

代码语言:javascript
运行
复制
interface IEngine {
    type:string;
}
票数 5
EN

Stack Overflow用户

发布于 2016-04-18 19:15:40

类型记录中的接口非常适合定义所需对象的“形状”。在您的示例中,您正在寻找一个具有名为type的属性的对象。这可以通过指定以下方法来实现:

代码语言:javascript
运行
复制
interface IEngine {
    type: string;
}

getters和setter是实现细节,然后在实现接口的对象中定义,比如问题中的Engine类型。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36701827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档