繁体   English   中英

TypeScript:如何将返回类型作为参数的类型?

[英]TypeScript: how to have return type be the type of a parameter?

我有这样的事情:

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

我有一个像这样的界面:

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

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

使用该函数时,我不想继续as Range进行操作,但是我希望它能够灵活地接收任何Object。

编辑:我最初想要没有泛型,但不理解泛型可以以不同的方式使用(如公认的答案所示)

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

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

注意,我使用的object不是Object ,因为Object在JS中几乎是任何东西,包括字符串和数字,我认为这不是您的意思。

还要注意,您不必显式传递type参数,这意味着可以正常工作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM