0

我正在使用具有以下函数类型定义的导入类型定义和某种复杂的参数类型:

export interface SomeTypeDefinition {
  someFunction: (
    param1: string,
    param2: {
      key1: number,
      key2: string,
      key3: {
        key4: boolean
      }
    }
  ) => number;
}

当我实现这个接口时,我是否需要像这样将输入参数复制并粘贴到实现函数中(或者创建我自己的接口并使用它):

function myImplementingFunction(p1: string, p2: {
  key1: number,
  key2: string,
  key3: {
    key4: boolean
  }
}): number;

或者有什么方法可以获取参数?像这样的东西,这显然是行不通的:

function myImplementingFunction(p1: SomeTypeDefinition['someFunction']['param1'],
    p2: SomeTypeDefinition['someFunction']['param2']):
    SomeTypeDefinition['someFunction']['return'];

函数类型定义不包括 param2 的单独类型键,这就是我想知道这一点的原因。

4

1 回答 1

0

您可以使用 TypeScript 的内置Parameters<>ReturnType<>实用程序类型:

function myImplementingFunction(
  p1: Parameters<SomeTypeDefinition['someFunction']>[0],
  p2: Parameters<SomeTypeDefinition['someFunction']>[1],
): ReturnType<SomeTypeDefinition['someFunction']> {
  // ...
}

在TypeScript Playground中查看它的实际效果。

于 2020-01-20T23:08:05.523 回答