最近又重新用TypeScript来作项目语言,然后发现一个比较有意思的事情,那就是:
TypeScript判断一个类是否继承自哪个接口,根本不需要implements对应的接口,只需要实现接口该接口对应的方法和初始化该接口对应的属性,这样就OK了。
一、正常的写法:
我们平常写一个类实现某个接口,都要在这样:类名 implements 接口名 。类似这样:
二:TypeScript的简化写法
可以不写:implements 接口名。甚至连ClassTest顶部的import { InterfaceTest } from "./InterfaceTest",都可以省略。
三:TypeScript没有实现方法或没有初始化属性的时候
1、没有implements 接口名
则在调用ClassTest的时候,会提示没有实现接口InterfaceTest。
2、implements 接口名
则在定义和调用的时候,就提示了没有实现接口InterfaceTest。
四、在报错的时候也运行
1、缺少属性的初始化
这种情况还是可以运行的,因为TS最终的形态还是JS,所以属性可以不用预先定义也能赋值和使用。
这里的报错是语法上的报错。
2、缺少方法的实现。
这种情况就会报错:
Uncaught TypeError: interfaceTest.func is not a function
因为JS在调用一个方法的时候,这个方法没有定义,这时就会报这个错。