什么是打字稿中的泛型?

Ban*_*Ban 5 generics typescript

我是打字稿的新手,从来没有进入过c#或java.所以,即使我阅读官方打字稿网站上的说明,我也真的不明白其实际用途Generics.

这是一个简单的例子Generics.在下面这样做有什么好处?

function identity<T>(arg: T): T {
    return arg;
}

var output = identity<string>("myString");
Run Code Online (Sandbox Code Playgroud)

没有Generics,我可以在下面这样做(或者我可以使用Interfaces确保传递指定的参数.)

function identity(arg: any): any  {
    return arg;
}
var output = identity("myString");
Run Code Online (Sandbox Code Playgroud)

任何意见,将不胜感激.谢谢

bas*_*rat 5

仅从您的基本示例开始:

function identity<T>(arg: T): T {
    return arg;
}
Run Code Online (Sandbox Code Playgroud)

在此处具有泛型会在参数()和返回类型之间施加约束。这使编译器可以从参数推断出返回类型,如下所示:arg:T: T{

function identity<T>(arg: T): T {
    return arg;
}

let str = identity('foo');
// str is of type `string` because `foo` was a string

str = '123'; // Okay;
str = 123; // Error : Cannot assign number to string
Run Code Online (Sandbox Code Playgroud)