Typescript

113 阅读1分钟

泛型

  • 定义函数时不需要知道参数类型,由调用时确定参数类型
  • 一般泛型命名T、K、V、E, type、key、value、element
  • 如下:
  • T是number类型
  • K是string类型
  • V是空对象类型
  • 函数返回结果是E,也是空对象类型
function doSomthing<T, K, E>(type, name, other): E{
}
doSomthing(2, 'MIKI', {})

循环

// extends约束K必须是T包含的属性名,keyof获取到T的所有key集合,返回的是一个对象
type MyPicker<T, K extends keyof T>{
    // in循环T里面的所有属性
    [P in K]: T[P]
}
// js实现
function myPick(todo, keys) {
    const obj = {}
    keys.forEach(key => {
        if(key in todo){
            obj[key] = todo[key]
        }
    })
    return obj
}
// 返回一个新对象,必须是目标对象包含的特定属性