function loggingIdentity<T>(arg: T[]): T[] {
console.log(arg.length)
return arg
}
loggingIdentity(['1', 2, '3'])
调用 loggingIdentity 函数的时候,我传递的是一个混合数组,元素有数字类型也有字符串类型。但编译的时候是ok 的,这和我预想的不一样呀。我预想的是我应该要么传递一个数字数组要么传递一个字符串数组这种元素类型一致的数组才能编译通过。
function loggingIdentity<T>,函数名 loggingIdentity 后面有个类型变量 <T>,说明当我们调用这个函数的时候,编译器会帮我们捕获实参的类型。但因为我们的形参是 T[ ],所以编辑器知道按照预期它要捕获的是一个数组的元素的类型,但这里我们调用时传递的是一个元素类型不一致的数组。那它的捕获机制是怎样的?选实参数组的第一个元素的类型作为捕获到的类型?