泛型约束

# 泛型约束

用来限制泛型的取值。

比如说,我们要限制泛型是一个对象中,并对对象中的某个属性进行处理

interface doSomthing {
    name: string
}
/**
 * 将名字每个字母大写。
 * @param obj 
 */
function doSomthing<T extends doSomthing>(obj: T): T {
    obj.name = obj.name.toUpperCase();
    return obj
}

const obj = {
    name: 'tom jackson',
    age: 18,
    hot: true
}

console.log(doSomthing(obj));

# 多泛型

当存在一个泛型解决不了的问题时,那就用多个!

// 合并两个不同类型的数组
// [1,2,3,5] ['a','b','c','d']

function concatArr<T, K>(arr1: T[], arr2: K[]): (T | K)[] {
    const neArr:(T|K)[] = [...arr1,...arr2];
    return neArr;
}