泛型
- 定义函数时不需要知道参数类型,由调用时确定参数类型
- 一般泛型命名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
}
// 返回一个新对象,必须是目标对象包含的特定属性