TypeScript 学习笔记 5
this
在 TypeScript 里可以规定 this 参数的类型。
以下代码示例规定 this 为某个接口。
interface Human{}
fn(this: Human){}
重载
重载有点像泛型。以下是重载与泛型的对比:
function add(n1: number, n2: number);
function add(n1: string, n2: string);
function add(n1, n2) {
return n1 + n2;
}
function add2<T>(n1: T, n2: T): T {
return n1;
}
add(1, 2); // 3
add("frank", "jack"); // 'frankjack'
add2(new Date(), new Date());
类型推断
TypeScript 是聪明的,TypeScript 编译器会自动识别出类型。
function add(n1: string,n2: string) {
return n1 + n2 ;
}
add('a','b') // 编译器会推断出为 string
类型兼容
即使对象的属性比接口多,下列代码也能跑。这种方法可以避免多写接口。
interface Human {
name: string;
age: number;
}
let y = {name:'xxx',age:18,gender:'yyy'}
let x: Human = y
soundness
很多语言都不 sound 的,包括 TypeScript。TypeScript 只求在正确性和效率性取得平衡,所以它的设计上不求完备。