Typescript:使用单个接口定义所有函数参数

hkmswyz6  于 2023-02-25  发布在  TypeScript
关注(0)|答案(1)|浏览(134)

是否有一种方法可以在一个接口中注解/输入所有函数参数,即使函数需要单独的参数?
这是我的职责

function f(param1, param2) { ...some functionality; }

这是我想要的类型(不完全是这样,但类似于这样)

interface FparamsType {
  param1: string,
  param2: number,
}

type Ftype = (params: FparamsType) => void

目前,我发现的使它工作的唯一方法是将所有参数收集到一个对象中,如下所示

function f({ param1, param2 }

或者在定义函数类型时展开接口,如下所示:

type Ftype = (param1: FparamsType['param1'], param2: FparamsType['param2']) => void
46scxncf

46scxncf1#

元组可以工作,尽管它只保存每个参数的 * 值 *,而不是参数名本身(因为接口的不同实现可以使用符合类型的任何参数名)。

type FparamsType = [string, number];
type Fn = (...args: FparamsType) => void;
const f: Fn = (param1, param2) => {
  // implementation here
  // param1 is automatically inferred as string
  // param2 is automatically inferred as number
}

相关问题