假设我具有以下接口IFace
和接口Add
的实现:
interface IFace {
add(a: number, b:number): number
}
class Add implements IFace {
add(a,b)
}
在我的add()
类中实现Add
方法时,可以不指定以下内容来实现:
a
和b
的类型?我尝试在Stack Overflow上搜索,但互联网没有发现任何相关内容。
答案 0 :(得分:1)
必须在Add
类add()
函数as per the typescript syntax requirements的方法签名中指定每个参数的类型。但是,可以从正在实现的接口推断Add
类add()
函数的返回类型,而不必显式提供。
因此,以下内容将有效:
interface IFace {
add(a: number, b:number): number
}
class Add implements IFace {
/* Must supply number types for a and b, but return type of function be be omitted */
add(a:number,b:number) {
return a + b;
}
}
答案 1 :(得分:0)
摘自官方的typecrip文档(https://www.typescriptlang.org/docs/handbook/interfaces.html) 接口描述了类的公共端,而不是公共端和私有端。这禁止您使用它们来检查类是否对类实例的私有端具有特定类型(因此,是的,在这种情况下,您需要定义a&b和d的类型)
interface ClockInterface {
currentTime: Date;
setTime(d: Date): void;
}
class Clock implements ClockInterface {
currentTime: Date = new Date();
setTime(d: Date) {
this.currentTime = d;
}
constructor(h: number, m: number) { }
}