TypeScript:实现接口时是否需要参数类型?

时间:2019-04-05 10:29:22

标签: javascript typescript

假设我具有以下接口IFace和接口Add的实现:

interface IFace {
    add(a: number, b:number): number
}

class Add implements IFace {
   add(a,b)
}

在我的add()类中实现Add方法时,可以不指定以下内容来实现:

  1. 方法的返回类型?
  2. 自变量ab的类型?

我尝试在Stack Overflow上搜索,但互联网没有发现任何相关内容。

2 个答案:

答案 0 :(得分:1)

必须在Addadd()函数as per the typescript syntax requirements的方法签名中指定每个参数的类型。但是,可以从正在实现的接口推断Addadd()函数的返回类型,而不必显式提供。

因此,以下内容将有效:

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) { }
}