将对象解构与流分类相结合

typ*_*ror 6 javascript static-typing reactjs flowtype flow-typed

我刚刚将Flow添加到我的Create-React-App项目中,并且在将我的一些计算代码转换为flow-typed时,我遇到了这个错误,其中包含一个被解构的"object as params"

原始签名:

calcWeightOnConveyor({ tonsPerHour, conveyorLength, conveyorSpeed })
Run Code Online (Sandbox Code Playgroud)

流式后:

calcWeightOnConveyor({ tonsPerHour: number, conveyorLength: number, conveyorSpeed: number }): number
Run Code Online (Sandbox Code Playgroud)

而错误:

$ flow
Error: src/utils/vortex/calculate.js:31
 31: export function calcWeightOnConveyor({ tonsPerHour: number, conveyorLength: number, conveyorSpeed: number }) {
                                                                                 ^^^^^^ Strict mode function may not have duplicate parameter names
Run Code Online (Sandbox Code Playgroud)

有没有办法以这种方式使用流与对象解构,还是应该重新设计这些函数API?

pau*_*her 6

通常,我遵循的模式,尤其是对于功能组件props如下:

type Props = {
  prop: Type,
};

const Component = ({
  prop,
}: Props) => ();
Run Code Online (Sandbox Code Playgroud)


Ros*_*len 5

是的,您可以通过如下注释整个对象来做到这一点:

calcWeightOnConveyor({
  tonsPerHour,
  conveyorLength,
  conveyorSpeed
}: {
  tonsPerHour:number,
  conveyorLength:number,
  conveyorSpeed:number
}):number
Run Code Online (Sandbox Code Playgroud)