增加接口定义

时间:2016-07-03 08:18:41

标签: typescript

以下代码是有效的typescript并按预期工作:

interface I {
  greet(name: string): void
}

class C implements I {
  greet(name:string) {
    console.log(`Hello ${name}`)
  }
}

现在考虑以下代码片段,我在其中增加了greet函数的签名:

interface I {
  greet(name: string): void
}

class C implements I {
  constructor() {
    this.greet = this.greet.bind(this, 'Jon');
  }
  greet(me: string, name:string) {
    console.log(`Hello ${name}, I'm ${me}`)
  }
}

此代码无法编译,因为接口I未正确实现:

Class 'C' incorrectly implements interface 'I'.
Types of property 'greet' are incompatible.
Type '(me: string, name: string) => void' is not assignable to type '(name: string) => void'.

有什么方法可以注释我的方法并告诉编译器注入额外的参数并且接口仍然有效吗?

1 个答案:

答案 0 :(得分:0)

  

有什么方法可以注释我的方法并告诉编译器注入额外的参数并且接口仍然有效

请勿更改功能的签名。只需更改函数使用的内容即可。例如

interface I {
  greet(name: string): void
}

class C implements I {
  me: string;
  constructor() {
    this.me = "jon";
  }
  greet(name:string) {
    console.log(`Hello ${name}, I'm ${this.me}`)
  }
}