当我不在打字稿中使用泛型时,为什么我会丢失信息?

时间:2018-05-15 23:59:21

标签: typescript generics

我对TypeScript's Generics有一些疑问。

  • 泛型如何在TypeScript中运行?
  • 文档说我们实际上正在丢失函数返回时该类型的信息,但是如何呢?它使用以下代码:

    function identity(arg: any): any {
        return arg; 
    }
    
  • generic我可以使用any做什么?

1 个答案:

答案 0 :(得分:2)

  

文档说我们实际上正在丢失函数返回时该类型的信息,但是如何呢?

此函数会丢失有关参数的信息:

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

const foo = identity(123); // typeof foo == `any`

以下函数(使用泛型)constrains函数的返回类型匹配输入类型。这将参数的类型保持(并流动)到返回类型:

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

const foo = identity(123); // typeof foo == `number`