使用泛型类型参数作为参数

Using generic type parameter as parameter

我正在尝试创建一个通用函数,该函数使用 any 类型参数调用另一个函数。这是我试过的:

static GetInstance<T>(): T {
        return <T>injector.get(T); // get(param: any): any
    }

问题是这不能编译。我收到 Cannot find name 'T' 错误。

我试过 get(typeof T) 但 typeof T 是字符串 "function".

我能做什么?

澄清一下:get() 方法接受类型。例如你可以这样使用它:

import { MyService } from '..'

constructor(){
    let val = this.injector.get(MyService);
}

Typescript 中的泛型仅适用于设计时。在某些 JS 替换中永远不会编译。但是你想要做的,实际上是使用泛型,期望它们在 javscript 中编译。

换句话说,T不存在。它只为你增加。您不能将其作为变量传递,因为它不是变量。正如我所说,这完全是虚构的。

因此 GetInstance 方法必须使用实际值调用 get 函数,而不是 T,因为它不存在。