【发布时间】:2021-10-19 03:06:08
【问题描述】:
我使用的是 TypeScript 4.3.5。在代码中,我需要传递一个函数,并且我需要检查该函数是否包含所需的参数。此代码不会引发语法错误:
function functionA (call: (name: string) => boolean) {
call("")
}
function functionB () {
return true;
}
function functionC() {
functionA(functionB); // this doesn't throw a syntax error
functionB(""); // this throws a syntax error
}
我也试过这种类型定义:
type FunctionB = {
(name: string): boolean
}
没有任何效果。当我调用 functionA(functionB) 时,我希望 TypeScript 会引发语法错误,因为 functionB 不包含预期的参数。当我调用functionB("") 时,它会抛出一个错误。
当我调用functionA(functionB) 时,有什么解决方法可以解决语法错误吗?
【问题讨论】:
-
可能有助于理解stackoverflow.com/questions/59135229/…的行为
-
请记住,您的
functionB实际上确实接受参数,就像任何用户定义的Javascript函数一样。 Javascript 函数总是接受任意数量的参数,并且简单地忽略无关的参数或用undefined填充以使其工作。这就是语言的工作方式,Typescript 旨在与 Javascript 语义一起使用。
标签: typescript