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

dst*_*str 5 typescript typescript-generics

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

static GetInstance<T>(): T {
        return <T>injector.get(T); // get(param: any): any
    }
Run Code Online (Sandbox Code Playgroud)

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

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

我能做什么?

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

import { MyService } from '..'

constructor(){
    let val = this.injector.get(MyService);
}
Run Code Online (Sandbox Code Playgroud)

Luk*_*uke 6

Typescript 中的泛型仅在设计时有效。在某些 JS 中永远不会出现 comied 替换。但您想要做的实际上是使用泛型,期望它们在 javscript 中进行编译。

\n\n

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

\n\n

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

\n