what is this
学习了ts 才对this有了真正的理解
this就是一个参数
interface Human{
name:string
age:number
}
function x(this:Human){
console.log(this);
}
x()//这里报错 无法调用
- 真正调用方式
x.call({name:'Jason',age:18})
判断this 就是看在调用的时候传入的this 是谁
重载
即实现函数的多种调用方式
参数可以为不同形式
类型推断
ts可以根据已规定的类型来判断 类型

类型兼容

设计目的:减少interface 声明
如果仅仅是在现有接口上多几个属性不至于在多声明几个接口
soundness
- 声明接口和函数
enum EventType { Mouse, Keyboard }
interface Event { timestamp: number; }
interface MouseEvent extends Event { x: number; y: number }
interface KeyEvent extends Event { keyCode: number }
function listenEvent(eventType: EventType, handler: (n: Event) => void) {
/* ... */
}
函数接受Event
- 子类型调用
传入的类型更加具体相较于Event
listenEvent(EventType.Mouse, (e: MouseEvent) => console.log(e.x + ',' + e.y));
- 传入Event 转成mouseEvent
listenEvent(EventType.Mouse, (e: Event) => console.log((<MouseEvent>e).x + ',' + (<MouseEvent>e).y));
网友评论