以下代码是有效的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'.
有什么方法可以注释我的方法并告诉编译器注入额外的参数并且接口仍然有效吗?
答案 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}`)
}
}