6

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

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

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

我试过get(typeof T)但 typeof T 是 string "function"

我能做些什么?

为了澄清: get() 方法接受类型。例如,您可以像这样使用它:

import { MyService } from '..'

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

1 回答 1

4

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

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

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

于 2016-05-30T13:48:34.773 回答