this

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((e).x + ',' + (e).y));

你可能感兴趣的:(this)