在 Typescript 中将函数参数定义为对象

old*_*cho 7 javascript typescript reactjs

我不喜欢调用单独传递参数的函数,而是更喜欢将它们作为对象传递,这样顺序并不重要。

例如

const sum = ({ arg1, arg2, arg3 }) => arg1 + arg2 + arg3;
Run Code Online (Sandbox Code Playgroud)

现在,我正在将一些代码迁移到 Typescript,但我不确定应该如何为这样的函数定义接口。

我已经尝试过类似的方法,但它不起作用:

在此输入图像描述

有什么线索吗?

aut*_*ean 7

怎么样:

interface InputObj {
    arg1: number;
    arg2: number;
    arg3: number;
}

interface ExampleProps {
    sum: (input: InputObj) => number
}
Run Code Online (Sandbox Code Playgroud)

或者内联:

interface ExampleProps {
  sum: (
    input: {
      arg1: number;
      arg2: number;
      arg3: number;
    }
  ) => number;
}
Run Code Online (Sandbox Code Playgroud)

但根据您的用例,您可能不需要定义ExampleProps. 这是sum没有任意input对象名称的函数:

const sum = ({
  arg1,
  arg2,
  arg3
}: {
  arg1: number;
  arg2: number;
  arg3: number;
}) => arg1 + arg2 + arg3;
Run Code Online (Sandbox Code Playgroud)