且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-09-08 16:58:29

看下面这个TypeScript函数:


function identity(arg: any): any {

   return arg;

}

1

2

3

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


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


function identity(arg: T): T {

   return arg;

}

1

2

3

现在,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’