Generics 什么是Typescript中的泛型?
我对typescript完全陌生,以前从未接触过c#或java。 因此,即使我阅读了typescript官方网站上的说明,我也确实不理解Generics 什么是Typescript中的泛型?,generics,typescript,Generics,Typescript,我对typescript完全陌生,以前从未接触过c#或java。 因此,即使我阅读了typescript官方网站上的说明,我也确实不理解泛型的真正用途 下面是泛型的简单示例。下面这样做的真正好处是什么 function identity<T>(arg: T): T { return arg; } var output = identity<string>("myString"); 如有任何建议,将不胜感激。 谢谢如果没有泛型,您的var输出只能作为any键入
泛型的真正用途
下面是泛型
的简单示例。下面这样做的真正好处是什么
function identity<T>(arg: T): T {
return arg;
}
var output = identity<string>("myString");
如有任何建议,将不胜感激。
谢谢如果没有泛型,您的var输出
只能作为any
键入
对于泛型,编译器知道输出
是一个字符串
,这是从基本示例开始的:
function identity<T>(arg: T): T {
return arg;
}
TypeScript中的泛型
在这种情况下,使用泛型比使用any类型安全得多。
让我向您展示文件内容:
没有泛型
在下面的代码中,randomElem函数从字符串数组返回字符串。在randomColor函数中,我们将类型更改为数字,但它在编译时(或)运行时不会产生任何错误
randomElem(theArray: any): any {
return theArray[0]; // returning a string.
}
randomColor() {
let colors: string[] = ['violet', 'indigo', 'blue', 'green']; // String array
let randomColor: number = this.randomElem(colors);
}
使用泛型
但是当使用泛型函数时,如果我们试图更改类型,那么在编译时就会出现错误
randomElem<T>(theArray: T[]): T {
return theArray[0];
}
randomColor() {
let colors: string[] = ['violet', 'indigo', 'blue', 'green']; // String array
let randomColor: number = this.randomElem(colors); // Produce Error
}
随机元素(数组:T[]):T{
返回数组[0];
}
随机颜色(){
让颜色:字符串[]=['紫色'、'靛蓝'、'蓝色'、'绿色'];//字符串数组
让randomColor:number=this.randomElem(颜色);//产生错误
}
这证明在这种情况下,使用泛型比使用任何类型都要安全得多:)。第一个签名意味着:接受某种类型的参数并返回相同类型的结果。您的第二段代码并没有声明这一点。很有趣。。那么使用它的真正好处是什么呢?您不需要显式地指定类型。编译器可以推断类型并确保它遵循泛型contraints@Ban我这里也有一些文件
randomElem(theArray: any): any {
return theArray[0]; // returning a string.
}
randomColor() {
let colors: string[] = ['violet', 'indigo', 'blue', 'green']; // String array
let randomColor: number = this.randomElem(colors);
}
randomElem<T>(theArray: T[]): T {
return theArray[0];
}
randomColor() {
let colors: string[] = ['violet', 'indigo', 'blue', 'green']; // String array
let randomColor: number = this.randomElem(colors); // Produce Error
}