Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Typescript中获取类的泛型参数类型_Typescript_Generics - Fatal编程技术网

如何在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'
变成Javascript
let x='hello world'
这些类型都不见了

解决方案 您要寻找的是一种从
ClassA
中提取泛型参数
T
的类型,typescript具有关键字
infere
,它允许您获取获取任何类型的类型参数

type getType=T扩展ClassA?U:从不

然后像这样使用它:

type Test=getType
测试的类型是字符串

注:
注意类型和值的不同,它们不是相同的东西,被完全不同地对待。

你所说的“T类类型”是什么意思?例如,对于
ClassA
它应该返回什么?您不能在函数中返回类型t,因为这是javscript代码,而类型在JS中不存在。我认为您想要的是从classA中提取泛型类型T。你可以用推断关键字做类似的事情,然后可以用来生成新的类型,但是你不能返回类型,因为类型不是一个值,这与说“返回字符串”是一样的,给我一点时间来解答这个问题谢谢!我知道了。不客气,当泛型类型参数不是
ClassA