我正在尝试创建一个泛型函数,该泛型函数使用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);
}
Typescript中的泛型仅是设计时。在某些JS替换中将永远不会被编译。但是,您要尝试做的实际上是使用期望它们在javscript中进行编译的泛型。
换句话说,T
不存在。它只是为您增强。您不能将其作为变量传递,因为它不是变量。正如我所说,这完全是虚构的。
因此,该GetInstance
方法必须get
使用实际值来调用该函数,而不是T
不存在它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句