背景

现在我们需要实现一个函数,返回任何传入它的值。

我们可能会这样做:

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

这里有一个问题,便是我们不能严格控制入参与出参保持一致的类型。

因此我们需要用到泛型 generics

泛型

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

这是泛型函数的定义方式,使用方式则有如下两种:

let output = identity<string>("myString");  // type of output will be 'string'
let output = identity("myString");  // type of output will be 'string'
  • 我们没必要使用尖括号(<>)来明确地传入类型;编译器可以查看myString的值,然后把T设置为它的类型

泛型数组

function loggingIdentity<T>(arg: T[]): T[] {
    console.log(arg.length);  // Array has a .length, so no more error
    return arg;
}

results matching ""

    No results matching ""