请稍等 ...
×

采纳答案成功!

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

老师你这样照着官方文档读,我真的不理解呢。

正在回答 回答被采纳积分+3

2回答

ustbhuangyi 2019-04-27 19:46:17

一个类主要包含 2 个部分:
静态部分和实例部分。

类类型接口就是描述类的静态部分,比如:
interface ClockConstructor {
 new (hour: number, minute: number)
}
这个就是类类型的接口

而:
interface ClockInterface {
   currentTime: Date
  setTime(d: Date)
}
这个是实例类型的接口,描述类的实例部分。

implements 是一个关键字

class Clock implements ClockInterface

表示我定义了一个 Clock 类要去实现 ClockInterface 接口定义的这些属性方法。

2 回复 有任何疑惑可以回复我~
  • gxmln #1
    怎么知道它究竟定义的是实例类型还是静态类型,new()和setTime()这俩不一样吗,不都是定义了两个函数吗
    回复 有任何疑惑可以回复我~ 2019-06-23 23:27:21
  • ustbhuangyi 回复 gxmln #2
    不一样,new 是特殊的关键字
    回复 有任何疑惑可以回复我~ 2019-06-24 00:34:44
  • EdonPlus 回复 ustbhuangyi #3
    请忽略。
    回复 有任何疑惑可以回复我~ 2019-07-06 22:47:32
EdonPlus 2019-07-06 22:52:10

老师,你说类类型接口就是描述类的静态部分。 

https://img1.sycdn.imooc.com//szimg/5d20b4f000017de116520246.jpg

比如在这方法中,我们用ClockConstructor描述了ctor参数,表示ctor参数必须有一个构造方法,而且这个构造方法必须有hour,minute参数,这里理解对吧?

 如果这样理解是对的,为什么我在下面写的两个类(DigitalClock、AnalogClock)中没有constructor(h: number, m: number) { },在传入在createClock的第一个参数的时候(ctor),不会报错??

https://img1.sycdn.imooc.com//szimg/5d20b5480001b86610300958.jpg


0 回复 有任何疑惑可以回复我~
  • TS 对于这块的类型检查比较宽松,如果不写不会报错,但是如果写了但是类型不对的话还是会报错的。
    回复 有任何疑惑可以回复我~ 2019-07-07 10:29:47
  • EdonPlus 回复 ustbhuangyi #2
    当一个类去实现一个接口的时候,它实际上是对实例部分做类型检查。 而构造器存在于类的静态部分,所以是不会做检查的。 那么当我们就是要对类的静态部分进行检查的时候,我们就用到类类型的接口,老师我这样理解对吗?
    回复 有任何疑惑可以回复我~ 2019-07-07 10:39:36
  • ustbhuangyi 回复 EdonPlus #3
    理解正确
    回复 有任何疑惑可以回复我~ 2019-07-07 23:57:05
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信