【发布时间】:2017-12-10 18:49:44
【问题描述】:
在下面的示例中,我使用通用函数:
function Identity<T>(arg: T): T[] {
return arg;
}
我可以这样写我的方法:
function loggingIdentity(arg) {
return arg;
}
这两种方法都可以接受任何类型的值并返回任何值。对上述方法使用泛型有什么好处? 在其他示例中,我使用泛型创建了一个类:
class GenericNumber<T> {
zeroValue: T;
add: (x: T, y: T) => T;
}
let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };
我可以在不使用泛型的情况下创建类和新对象:
class GenericNumber {
zeroValue;
add: (x, y);
}
let myGenericNumber = new GenericNumber();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };
在 c# 语言中类型确定是强制性的,但在 typescript 中是可选的,我们可以在没有类型确定的情况下声明属性或变量或参数,它们可以是任何类型。
如果有人描述我在 typescript 中使用泛型的重要性和所有好处,我会很高兴。
【问题讨论】:
-
你可以在 TypeScript 的任何地方使用
any。但是你基本上是在使用 JavaScript,并且不再有任何类型安全性,这就是 TypeScript 存在的原因。 IDE 告诉您数组应该包含什么,并拒绝让您将字符串推送到 Array中,这不是很好吗?
标签: .net class typescript generics