请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么将Radio单独定义为借口后,类的内部还需要单独再定义?

回答1 浏览122 2020-10-10 22:43:51

按照老师所讲的内容,针对多个类中可以定义同一个模型形状的方法可以单独定义一个接口来描述形状。

但是在我的测试中,例如:

interface Radio {
  fn(input: number): void;
}

class Car implements Radio {
  fn(input: number) {}
}

class Phone implements Radio {
  fn(input: number) {}
}

本来我以为单独定义好接口后,可以这么写:

interface Radio {
  fn(input: number): void;
}

class Car implements Radio {
  fn(input) {}
}

class Phone implements Radio {
  fn(input) {}
}

但是发现不行,会提示这个 input 参数为 any。
那么我的问题是:既然方法需要写全各种参数及返回值等数据的类型,为什么还要单独给提成一个独立的接口?这样不麻烦吗?

比如像之前的接口定义:

// 接口定义
interface IFn {
  (x: number, y: number): number
}

// 使用
const fn1: IFn = (x,y)=>{}
const fn2: IFn = (x,y)=>{}
const fn3: IFn = (x,y)=>{}

我觉得上面的这个写法是能理解的。但是类的这个写法有点不太明白,给我得感觉就像:

// 接口定义
interface IFn {
  (x: number, y: number): number
}

// 使用
const fn1: IFn = (x: number, y: number):number => { return x + y}

那这样不费事么?

添加回答

1回答

  • 同学你好 implements 是 OOP 中的一个概念,称之为实现,这个实现你可以理解为一种约束,interface 在这里像是一个规范,implements 就表示,...
    2020-10-11 17:39:07
    • 老师,这种思想有点像TS中的抽象类啊,就是声明一个抽象类,里面有抽象的属性和方法,然后继承这个抽象类的类必须要有抽象类身上的属性和方法
      2020-10-12 11:45:31

Vue3.0(正式版) + TS 仿知乎专栏企业级项目 深度剖析Vue3新特性

难度中级
时长17小时
人数952
好评度99.1%

Vue3.0 全家桶+TS ,带你完成前后端分离复杂项目,率先掌握vue3.0造轮子技能

讲师

张轩 Web前端工程师

曾在Apple、百度担任高级前端开发工程师,是《React全栈:Redux Flux webpack Babel整合开发》该书作者,拥有丰富的Web开发经验,喜欢追寻新技术,同时致力于前端工程化,并且有大型SPA项目的架构及开发经验。

意见反馈 帮助中心 APP下载
官方微信