TypeScript里的类型为any和泛型的区别

看下面这个TypeScript函数:

function identity(arg: any): any {
    return arg;
}

虽然使用any类型后这个函数已经能接收任何类型的arg参数,但是却丢失了一些信息:传入的类型与返回的类型应该是相同的。 通过any类型,无法实现这个约束。

因此,需要一种方法使返回值的类型与传入参数的类型是相同的。 这里,我们使用了类型变量,它是一种特殊的变量,只用于表示类型而不是值。

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

现在,identity接受的参数类型和返回类型必须一致。

两种方式调用该函数:


(1) let output = identity(“myString”);  // type of output will be ‘string’

明确的指定了T是string类型,并做为一个参数传给函数,使用了<>括起来而不是()。

(2) 类型推论,编译器会根据传入的参数自动地帮助我们确定T的类型:

 let output = identity(“myString”);  // type of output will be ‘string’

你可能感兴趣的:(TypeScript里的类型为any和泛型的区别)