TypeScript 函数泛型
function join(first: string | number, second: string | number) { return `${first}${second}`; } join('1', 1); /** * 这么看 join 还挺好用的。 * 如果我想做到这两个数要么都传 string,要么都传 number * 一个 string,一个 number 时希望提醒我 * * 这个时候需要使用泛型这个概念 * 泛型 generic 泛指的类型 * join<ABC>,这个 <abc> 指的就是泛型 */ function join1<ABC>(first: ABC, second: ABC) { return `${first}${second}`; } join1<string>('1', '1'); // 这个意思就是调用 join1 时我指定 ABC 是 string,那么 first,second 都是 string join1<number>(1, 1); // 这个意思就是调用 join1 时我指定 ABC 是 number,那么 first,second 都是 number /** * 这个就是泛型的概念,有的时候遇到这样的情况 * ABC 后面加 [] ,变成 ABC[],那么就是一个数组 * 这个时候直接传字符串是不行的,要传 string 类型的数组 */ function map<ABC>(params: ABC[]) { return params; } map<string>(['123']); // 或者 function map1<ABC>(params: Array<ABC>) { return params; } map1<string>(['123']); /** * 泛型还可以指定多个 */ function join2<T, P>(first: T, second: P) { return `${first}${second}` } join2<string, number>('1', 2) /** * 如果调用的时候不写类型, ts 会去推断 * 泛型只有在用的时候才知道是什么类型 */