zoukankan      html  css  js  c++  java
  • [TypeScript] Understand lookup types in TypeScript

    Lookup types, introduced in TypeScript 2.1, allow us to dynamically create types based on the property keys of an object. We'll use the function spyOn from Jest to illustrate how lookup types can type-safe function parameters.

    Considering this code:

    function spyOn(obj: Object, prop: string) {
        console.log(obj, prop);
    }
    
    interface IPerson {
        name: string,
        age: number
    }
    
    const person: IPerson = {
        name: 'John',
        age: 54
    };
    
    spyOn(person, 'address');

    We have a 'IPerson' interface and we spyOn 'person' object for 'address' prop. IDE cannot catch any error.

    If we want IDE helps to catch error, we can use generics for 'spyOn' function:

    function spyOn<O extends object, P extends keyof O>(obj: O, prop: P) {
       ....
    }

    So what we tell TypeScript is, 

    • First param is an object,
    • Second param is a prop of the first object

    So what is 'keyof'?

    Now TypeScript can catch the error:

  • 相关阅读:
    Windows Phone 7 电话本相关的操作
    Windows CE 下判断 URL 地址是否有效
    cigarettes
    开灯问题
    日期计算
    小学生算术
    另一种阶乘问题
    鸡兔同笼
    笨小熊
    6174问题
  • 原文地址:https://www.cnblogs.com/Answer1215/p/6898881.html
Copyright © 2011-2022 走看看