1

我有一种情况,我有一个通用函数,它接受一个类型参数,然后根据该类型调用另一个更具体的函数。我将一个可选参数传递给某些特定函数但并非所有函数都需要的通用函数。因为参数是可选的,所以我在尝试调用特定函数时遇到输入错误,该函数需要参数且可能未定义。下面的代码或这里的stackblitz 。有没有办法我可以正确输入它以便它通过 strictNullChecks?

function specificAction1(): number {
  return 1;
}

function specificAction2(param2: boolean): number {
  return 2;
}

function triggerGenericAction(
  actionType: "action1" | "action2",
  param2?: boolean
): number {
  const specificActionForActionType = {
    ["action1"]: specificAction1,
    ["action2"]: specificAction2
  };

  return specificActionForActionType[actionType](param2);
}

4

0 回答 0