为什么会出现泛型 我们在定义函数参数类型的时候,通常会这么使用
// 实现两个number想加
function add(a: number, b: number) {
return a+b
}
// 实现两个字符串相加
function add(a: string, b: string) {
return a+b
}
// 如果我们想实现add函数既可以数字相加又可以字符串相加的话, 有人可能会觉得这样写:
function add(a: number|string, b: number|string) {
return a+b
}
// 显然,这样写的问题虽然可以扩宽参数的类型,但是丢失了一致性规范,如果我传入add(1, '2'),这并不会