extends和implements的区别
extends 是继承父类,只要那个类不是声明final或者定义为abstract就能继承,JAVA中不支持多重继承,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了。
class A extends B implements C,D,E(){ //class子类名extends父类名implements接口名
}
同理,在Typescript
里也可以使用。
interface Person<T>{
name:T
}
class Kiri<Person>{
name:Person
}
let kiri=new Kiri<Number>()
kiri.name=2
console.log(kiri);
Typescript书写规范
1.类型
不要使用如下类型Number,String,Boolean或Object。
这些类型指的是非原始的装盒对象,它们几乎没在JavaScript代码里正确地使用过。
/* 错误 */
function reverse(s: String): String;
应该使用类型number,string,and boolean。
/* OK */
function reverse(s: string): string;
2.回调函数返回值
不要为返回值被忽略的回调函数设置一个any
类型的返回值类型:应该设为void
/* 错误 */
function fn(x: () => any) {
x();
}
//应该给返回值被忽略的回调函数设置void类型的返回值类型:
/* OK */
function fn(x: () => void) {
x();
}
//为什么:使用void相对安全,因为它防止了你不小心使用x的返回值:
function fn(x: () => void) {
var k = x(); // oops! meant to do something else
k.doSomething(); // error, but would be OK if the return type had been 'any'
}