关于类类型

来源:3-12 接口 -类类型+继承接口+混合类型+接口继承类

慕田峪8178134

2019-08-12

老师,你好,我是一个没有接触过类的小白…
图片描述

你说的类一个类主要包含 2 个部分:静态部分和实例部分。
1.静态部分就是constructor里的内容,
实例部分就是类里除去constructor的其他内容吗?

有点迷惑关于这一段代码

interface ClockConstructor {
    new (hour: number, minute: number): ClockInterface;
}
这里的new (hour: number, minute: number): ClockInterface;
2.为什么要指定返回类型是ClockInterface
3.为什么要用new,不能直接constructor(hour: number, minute: number) { }吗

还有这里

function createClock(ctor: ClockConstructor, hour: number, minute: number): ClockInterface {
  return new ctor(hour, minute);
}
4.为什么要规定返回一个ClockInterface 类型,我尝试去掉,之后编译也没报错
写回答

1回答

ustbhuangyi

2019-08-13

1. 静态部分除了 constructor,还包括一些 static 方法。
2. 因为这是定义了构造函数的接口,一个类通过构造函数实例化后返回的就是它的实例,所以返回的类型就是类的实例类型,也就是 ClockInterface。
3. 必须要用 new,这样它才会被看作是一个构造函数的接口,否则就是一个普通函数了。
4. 通常我们去定义一个函数,要指定函数参数的类型以及返回值类型,虽然你不写返回值类型没有报错,但是并不是一个好习惯,建议还是写上。

1
1
慕田峪8178134
谢谢老师
2019-08-13
共1条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2631 学习 · 877 问题

查看课程