开发人员可以使用Generics
为类,实例成员,静态成员和函数指定类型约束。
泛型做什么?
从本质上讲,它们充当类型的占位符,以便通过适应不同类型,可以在应用程序的多个位置使用组件。
泛型解决了什么问题?
假设您希望确保函数的输入和返回值属于同一类型,这就是泛型的用武之地。
功能
function printMessage(arg: any): any {
return arg;
}
// typescript won't complain because the argument type and return type aren't being typed properly
const myMessage: string = printMessage(1);
正如您从上面所看到的,为函数中的参数类型传递any
以及返回类型并不理想,因为在此过程中类型信息会丢失。
// updated example
function printMessage<T>(arg: T): T {
return arg;
}
// typescript complains because the variable type and the return type of the function don't match
const myMessage: string = printMessage(1);
// resolve the issue by making sure both types match each other
const myMessage: number = printMessage(1);
在函数中包含<T>
告诉TypeScript它是泛型函数,并将其作为引用传递将使TypeScript知道与其关联的值具有相同的类型。
类
class Person {
fullName: string;
constructor(fullName: string) {
this.fullName = fullName;
}
getFullName() {
return 'My name is ' + this.fullName;
}
}
class Guest extends Person {};
let guest = new Guest('abc');
function getUser<T>(user: T): T {
return user;
}
// foo will be of type 'guest' because it's being passed in as the argument
const foo = getUser(guest);
更多TypeScript教程
学习更多TypeScript教程