我如何推断没有类型变量的返回类型?

道乐DK

我的目标是创建一个函数,以克隆一个数组-并保留类型。使用此代码,typescript将返回类型声明为any:

export function someFn(inputArray) {
    return [...inputArray];
}
// result will have any[] as type
const result = someFn([1, 2, 3]);

我怎么能告诉打字稿,返回类型someFn将与输入相同(即,在这种情况下,是一个数字数组)?

解决方法

我知道我可以使用类型变量来做到这一点:

export function someFn<T>(inputArray): T[] {
    return [...inputArray];
}
// result will have number[] as type (but only because I input T as number)
const result = someFn<number>([1, 2, 3]);

我想避免上述解决方法,因为它迫使我事先声明类型。

拉蒙·巴尔塔扎(Ramon Balthazar)

如果您将自变量键入为任何依赖的参数T(在下面的示例中T[]),则将从该自变量推断出泛型,而无需在调用时指定它:

function someFn<T>(inputArray: T[]): T[] {
  return [...inputArray];
}

const result = someFn([1, 2, 3]); // `result` will be of type `number[]`

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我是否打破了Java的局部变量类型推断?

进行类型推断和命名返回变量

如何推断具有继承类型的类型参数?

如何推断可以根据条件返回类型的函数的类型?

如何推断函数的返回类型?

CRTP:如何推断要用作返回类型的成员类型?

返回通用类型时*我收到错误信息,无法推断类型变量T

Scala-如何推断返回类型

我的函数没有返回正确的类型,可以吗?

有没有办法提示C#如何执行泛型类型推断?

RxKotlin“ withLatestFrom(...)”编译错误:没有足够的信息来推断类型变量R

没有函数的接口和类型的类型实参推断

如何推断函数对象的返回类型?

没有足够的信息来推断类型变量T

如何在IntelliJ IDEA中从具有推断类型的变量导航到Kotlin类型声明?

从通用类型推断返回类型?

没有模板的推断冲突类型

具有默认值但没有类型注释的函数参数的推断类型是什么?初始化为“无”的变量如何?

findViewById错误-没有足够的信息来推断类型变量T。我复制了Java代码并将其在线转换

TypeScript:如何使用变量推断的类型在类外部定义具有相同类型的另一个变量

如何使用C中没有参数且没有返回类型的函数来更新变量

指定没有中间变量的返回类型

如何推断泛型函数的返回类型

添加横幅广告, findViewById 提供“没有足够的信息来推断类型变量”。

TypeScript forEach 如何推断联合的类型并更改返回类型

没有泛型的类型推断?

有没有办法让 TypeScript 根据调用参数推断函数返回值的类型?

如何从参数对象动态推断返回类型?

没有足够的信息来推断类型变量 T1