【问题标题】:Typescript interface with void method - not reporting error带有 void 方法的 Typescript 接口 - 不报告错误
【发布时间】:2015-07-07 10:38:56
【问题描述】:

为什么编译器不抱怨下面的代码?该接口有一种方法是无效的。该类实现了接口但签名不一样,但编译器仍然没有抱怨;

interface myinterface {
  getMethod() : void;
}

class myclass implements myinterface {               
  getMethod()  {
    return "return string";
  }
}

var myObj = new myclass()

var strVar = myObj.getMethod();

【问题讨论】:

标签: typescript


【解决方案1】:

为什么编译器不抱怨

我对 TypeScript 中类型的看法是,类型是满足接口的最少信息。因此,只要它涵盖了最少的输入,就可以了。

因此,在上面的示例中,您已经实现了一个具有该名称的函数,该函数不接受任何参数,并且至少执行了一个不返回任何内容的实现。

至于能够将其分配给外部的另一个变量...如果您从该函数中什么也不返回,那么该函数的返回只是undefined

之所以认为 TypeScript 中的输入是履行合同的最小限度是因为类型检查是 100% 可选的。

【讨论】:

    猜你喜欢
    • 2022-09-28
    • 2020-03-24
    • 2022-11-01
    • 1970-01-01
    • 2014-08-29
    • 2017-07-06
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多