TypeScript:如何让返回类型成为参数的类型?

大卫

我有这样的事情:

const shiftObjValues = (obj: Object, shift: number): Object => { ... }

我有一个这样的界面:

interface Range {
  start: number;
  end: number;
}

现在,这是一个Object,当它被传递到函数中时,我希望返回类型为Range.

我不想as Range在使用该功能时继续这样做,但我希望它保持灵活,能够接收任何对象。

编辑:我最初想要没有泛型但不明白泛型可以以不同的方式使用(如接受的答案所示)

亚伦·比尔

是的,您想使用泛型(又名类型参数)来保留传入类型。您可以使用类型约束来确保它是一个对象。

const shiftObjValues = <T extends object>(obj: T, shift: number): T => { /* ... */ }

注意我使用了objectnot Object,就像ObjectJS 中的任何东西一样,包括字符串和数字,我认为这不是你的意思。

另请注意,您不必显式传递类型参数,这意味着这可以正常工作:

let range: Range = { start: 0, end: 1 };
let shifted = shiftObjValues(range, 1);
// `shifted` is inferred as type `Range`

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TypeScript返回参数的类型

Typescript:如何根据参数类型获取函数的返回类型?

TypeScript根据类型参数返回不同的类型

TypeScript - 基于参数类型的函数返回类型

TypeScript:返回与参数相同的类型

如何使TypeScript基于返回值识别函数的参数类型?

Typescript - 使函数返回类型成为接口实现的类

TypeScript子类:如何设置父类中定义的方法的参数类型和返回类型

TypeScript:如何根据函数参数类型设置函数返回值类型

TypeScript从使用的参数推断返回类型

Typescript返回类型取决于参数

Typescript返回类型取决于对象参数

Typescript从参数返回函数的类型

基于输入参数的TypeScript函数返回类型

从枚举参数推断Typescript函数返回类型

Typescript函数的返回类型取决于参数的数量或类型

TypeScript映射函数从其参数类型返回的类型

基于类型参数的返回类型

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

如何获取Scala函数的参数/返回类型?

如何获取模板参数方法的返回类型?

如何从Typescript中的函数获取参数类型

如何检查 Typescript 中的参数类型?

TypeScript:如何从类型中提取通用参数?

TypeScript如何推断回调参数类型

如何根据参数类型转换函数的返回类型?

如何使用Scala反射查找返回类型参数的方法的类型?

如何根据类方法的返回类型声明参数类型?

flowtype:如何按参数计数/类型重载函数返回类型?