如何在Typescript中获取类的泛型参数类型
我想获取某些类的泛型参数类型,例如:如何在Typescript中获取类的泛型参数类型,typescript,generics,Typescript,Generics,我想获取某些类的泛型参数类型,例如: class ClassA<T> { value!: T; getParameterType() { return <type of T>; } } A类{ 值!:T; getParameterType(){ 返回; } } getParameterType方法返回T的类类型,以及如何执行?或者有其他方法?您不能在Typescript中返回类型,因为类型不是值。Typescript编译为J
class ClassA<T> {
value!: T;
getParameterType() {
return <type of T>;
}
}
A类{
值!:T;
getParameterType(){
返回;
}
}
getParameterType
方法返回T的类类型,以及如何执行?或者有其他方法?您不能在Typescript中返回类型,因为类型不是值。Typescript编译为Javascript,因此那里不存在类型。当我编译代码时(当我将“type”和“of”连接到typeof
中时),会出现错误,错误是:
“T”仅指类型,但在此处用作值
这是完全正确的,您只能返回值并使用这些值对其执行操作。无法返回类型。这与编写以下函数相同:
function wrong() {
return string // You can return 'hello world'
}
您不能说返回字符串
还可以查看编译typescript代码时会发生什么:
let x:string='hello world'
变成Javascriptlet x='hello world'
这些类型都不见了
解决方案
您要寻找的是一种从ClassA
中提取泛型参数T
的类型,typescript具有关键字infere
,它允许您获取获取任何类型的类型参数
type getType=T扩展ClassA?U:从不
然后像这样使用它:
type Test=getType
测试的类型是字符串
注:
注意类型和值的不同,它们不是相同的东西,被完全不同地对待。你所说的“T类类型”是什么意思?例如,对于
ClassA
它应该返回什么?您不能在函数中返回类型t,因为这是javscript代码,而类型在JS中不存在。我认为您想要的是从classA中提取泛型类型T。你可以用推断关键字做类似的事情,然后可以用来生成新的类型,但是你不能返回类型,因为类型不是一个值,这与说“返回字符串”是一样的,给我一点时间来解答这个问题谢谢!我知道了。不客气,当泛型类型参数不是ClassA