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

时间:2022-07-23
本文章向大家介绍TypeScript里的类型为any和泛型的区别,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

看下面这个TypeScript函数:

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

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

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

function identity<T>(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’