Javascript TypeScript:如何使返回类型成为参数的类型?
我有这样的想法:Javascript TypeScript:如何使返回类型成为参数的类型?,javascript,typescript,generics,Javascript,Typescript,Generics,我有这样的想法: const shiftObjValues = (obj: Object, shift: number): Object => { ... } 我有这样一个界面: interface Range { start: number; end: number; } 现在,这是一个对象,当它被传递到函数中时,我希望返回类型为范围 我不想在使用该功能时继续执行as Range,但我希望它能够灵活地接收任何对象 编辑:我原本希望不使用泛型,但不理解泛型以不同的方式可用(如接
const shiftObjValues = (obj: Object, shift: number): Object => { ... }
我有这样一个界面:
interface Range {
start: number;
end: number;
}
现在,这是一个对象
,当它被传递到函数中时,我希望返回类型为范围
我不想在使用该功能时继续执行as Range
,但我希望它能够灵活地接收任何对象
编辑:我原本希望不使用泛型,但不理解泛型以不同的方式可用(如接受的答案所示)是的,您希望使用泛型(aka type参数)来保留传入的类型。可以使用类型约束来确保它是对象
const shiftObjValues = <T extends object>(obj: T, shift: number): T => { /* ... */ }
const shiftObjValues=(obj:Object,shift:number):Range=>{return myVar as Range}
我以Range
为例。但是,如果它们传入一个三角形
,例如,它将返回一个三角形
,您不想使用泛型有什么特别的原因吗?在主题之外,您应该使用对象
,而不是像reselect make这样的对象
库。这是一个更糟糕的解决方案,问题是不使用泛型。为什么我不知道,因为这应该是答案,但问题排除了它。谢谢。出于某种原因,我对泛型实现将如何进行感到困惑。
let range: Range = { start: 0, end: 1 };
let shifted = shiftObjValues(range, 1);
// `shifted` is inferred as type `Range`