使用泛型类型参数作为参数
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
,因为它不存在。
我正在尝试创建一个通用函数,该函数使用 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
,因为它不存在。