在函数中传递使用的泛型类型可以通过以下几种方式实现:
function printArray<T>(arr: T[]): void {
for (let item of arr) {
console.log(item);
}
}
let numbers: number[] = [1, 2, 3, 4, 5];
let strings: string[] = ["apple", "banana", "orange"];
printArray<number>(numbers); // 打印数字数组
printArray<string>(strings); // 打印字符串数组
在上述示例中,printArray
函数使用了泛型参数 T
来表示数组的元素类型,然后在函数调用时通过 <number>
和 <string>
来传递具体的类型。
function printArray<T>(arr: T[]): void {
for (let item of arr) {
console.log(item);
}
}
let numbers = [1, 2, 3, 4, 5]; // 类型推断为 number[]
let strings = ["apple", "banana", "orange"]; // 类型推断为 string[]
printArray(numbers); // 打印数字数组
printArray(strings); // 打印字符串数组
在上述示例中,numbers
和 strings
数组的类型由 TypeScript 编译器根据赋值的值自动推断得出,无需显式指定类型参数。
interface Printable {
print(): void;
}
function printArray<T extends Printable>(arr: T[]): void {
for (let item of arr) {
item.print();
}
}
class Person implements Printable {
constructor(private name: string) {}
print(): void {
console.log(`Person: ${this.name}`);
}
}
class Animal implements Printable {
constructor(private species: string) {}
print(): void {
console.log(`Animal: ${this.species}`);
}
}
let people: Person[] = [new Person("Alice"), new Person("Bob")];
let animals: Animal[] = [new Animal("Dog"), new Animal("Cat")];
printArray(people); // 打印人员信息
printArray(animals); // 打印动物信息
在上述示例中,printArray
函数使用了泛型约束 T extends Printable
来限制参数类型必须实现 Printable
接口,从而确保传入的参数具有 print
方法。
总结:通过参数化类型、类型推断和类型约束,我们可以在函数中传递使用泛型类型,并根据具体的需求选择合适的方式。
领取专属 10元无门槛券
手把手带您无忧上云