Typescript 泛型标识函数能否推断元组类型?

Typescript 泛型标识函数能否推断元组类型?,typescript,typescript-generics,Typescript,Typescript Generics,我有一个函数可以有效地返回其参数,当前类型为: 函数hx:T:T{ //实际上,做更多的事情,然后: 返回x; } 当我在操场上尝试这种类型时,会推断出泛型类型,正如我预期的那样: h123;//T:123 h'stringval';//T:‘stringval’ 但当我传递一个元组时,它会给我一个联合数组类型: h[a',2];//T:字符串|编号[] 有没有一种方法可以编写hxs类型,以便推断元组参数,或者我是否需要使用以下帮助程序: 函数元组…参数:T:T{ 返回args; } 两个'a'

我有一个函数可以有效地返回其参数,当前类型为:

函数hx:T:T{ //实际上,做更多的事情,然后: 返回x; } 当我在操场上尝试这种类型时,会推断出泛型类型,正如我预期的那样:

h123;//T:123 h'stringval';//T:‘stringval’ 但当我传递一个元组时,它会给我一个联合数组类型:

h[a',2];//T:字符串|编号[] 有没有一种方法可以编写hxs类型,以便推断元组参数,或者我是否需要使用以下帮助程序:

函数元组…参数:T:T{ 返回args; } 两个'a',2; 我不想强迫人们手动标记他们的元组类型,而是在可能的情况下推断它们

但当我传递一个元组时,它会给我一个联合数组类型:

h[a',2];//T:字符串|编号[] 当我传递一个元组时,你会写,但你没有传递元组。您正在传递一个数组

有没有一种方法可以编写hxs类型,从而推断元组参数

TypeScript永远不会从数组文本推断元组类型。元组是使用数组的一种特殊方式。TypeScript无法读懂您的心思,它不可能知道您打算如何使用该数组,所以元组总是需要显式键入

identity函数返回元组的唯一方法是向其传递一个元组。当传递数组文本时,不是传递元组,而是传递数组

如果您实际传递了一个元组,那么您的标识函数就可以正常工作:

常数thisIsAnArray=[a',2];//推断为字符串|编号[] 常量thisisataple:[字符串,数字]=['a',2]; 常数thisaalsoatuple=[a',2]作为常数; hthisIsAnArray;//T:字符串|编号[] hthisisataple;//T:[字符串,数字] hthisalsaatuple;//T:只读[a',2] 请注意,这些都与您的函数无关。您的函数工作得非常好:它返回的正是传入的内容,其返回类型正是参数的类型

在你的测试中,你一开始从来没有通过一个元组,因此你没有得到一个元组。你得到的正是你要传递的东西:一个数组

但当我传递一个元组时,它会给我一个联合数组类型:

h[a',2];//T:字符串|编号[] 当我传递一个元组时,你会写,但你没有传递元组。您正在传递一个数组

有没有一种方法可以编写hxs类型,从而推断元组参数

TypeScript永远不会从数组文本推断元组类型。元组是使用数组的一种特殊方式。TypeScript无法读懂您的心思,它不可能知道您打算如何使用该数组,所以元组总是需要显式键入

identity函数返回元组的唯一方法是向其传递一个元组。当传递数组文本时,不是传递元组,而是传递数组

如果您实际传递了一个元组,那么您的标识函数就可以正常工作:

常数thisIsAnArray=[a',2];//推断为字符串|编号[] 常量thisisataple:[字符串,数字]=['a',2]; 常数thisaalsoatuple=[a',2]作为常数; hthisIsAnArray;//T:字符串|编号[] hthisisataple;//T:[字符串,数字] hthisalsaatuple;//T:只读[a',2] 请注意,这些都与您的函数无关。您的函数工作得非常好:它返回的正是传入的内容,其返回类型正是参数的类型


在你的测试中,你一开始从来没有通过一个元组,因此你没有得到一个元组。您得到的正是您要传递的内容:数组。

对于元组文字,只需将常量附加到参数,您可以将参数作为h['a',2]作为常量传递。对于元组文字,只需将常量附加到参数,您可以将参数作为h['a',2]作为常量传递。