this

作者: clumsy钧 | 来源:发表于2019-01-25 23:41 被阅读0次

    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));
    

    相关文章

      网友评论

          本文标题:this

          本文链接:https://www.haomeiwen.com/subject/jjwvjqtx.html