首页 > 解决方案 > 如何声明一个只接受两个或零个参数的函数?

问题描述

在 TypeScript 中,如果我声明这样的函数

function foo(arg1?: any, arg2?: any)

如果我调用函数,编译器不会抱怨

如果我希望编译器符合一个参数而不是两个或零,我应该如何声明该函数?

标签: typescript

解决方案


您可以使用函数重载: https ://www.typescriptlang.org/docs/handbook/2/functions.html#function-overloads

// Start with most specific overload signature
function foo(arg1: any, arg2: any): any; 

// And then, less specific overload signature
function foo(): any; 

// At the end, write your function implementation
function foo(arg1?: any, arg2?: any) {
  console.log(arguments);
}

foo(1, 'test'); // Ok
foo(); // Ok 
foo('a'); // Compile error

推荐阅读