面试题答案
一键面试- 函数参数位置声明泛型:
- 不同点:在函数参数位置声明泛型,主要是为了让函数接受不同类型的参数,但保持这些参数在函数内部的类型一致性。它更侧重于对输入数据类型的灵活处理,确保函数可以复用逻辑处理不同类型的数据输入。
- 代码示例(以TypeScript为例):
function printValue<T>(value: T) {
console.log(value);
}
printValue<string>("Hello");
printValue<number>(123);
在上述代码中,printValue
函数在参数位置声明了泛型T
,这样它可以接受任何类型的参数,并打印出来。这里T
代表了传入参数的类型,通过类型标注<T>
来指定实际传入参数的类型。
- 函数返回值位置声明泛型:
- 不同点:在函数返回值位置声明泛型,强调的是函数返回值的类型与函数内部某些操作相关,且这个返回值类型是动态可变的,取决于函数内部逻辑或者传入的其他参数等。它侧重于控制函数返回结果的类型灵活性。
- 代码示例(以TypeScript为例):
function createArray<T>(length: number, value: T): T[] {
let result: T[] = [];
for (let i = 0; i < length; i++) {
result.push(value);
}
return result;
}
let arr1 = createArray<string>(3, "a");
let arr2 = createArray<number>(2, 10);
在上述代码中,createArray
函数在返回值位置声明了泛型T
,函数根据传入的length
和value
创建一个包含length
个value
的数组并返回。这里返回值类型T[]
取决于传入的value
的类型,通过泛型T
来动态确定返回数组元素的类型。