TypeScript里怎么正确声明一个可选的函数参数?
我写了一个函数,想让第二个参数是可选的,但TS一直报错说类型不匹配。试过加问号和默认值都不行,是不是哪里写错了?
比如下面这样:
function greet(name: string, title?: string) {
return <code>${title ? title + ' ' : ''}${name}</code>;
}
greet('Alice', 'Dr');
调用时明明传了两个参数,为什么还提示“Expected 1 arguments, but got 2”?
标签,这在普通的字符串模板中是不起作用的。另外,错误提示 "Expected 1 arguments, but got 2" 并不是因为你第二个参数是可选的导致的,这可能是编辑器或者环境配置的问题,因为你的代码逻辑本身没有问题。
不过我们先修正一下字符串拼接的部分,确保它能正常工作:
这段代码应该可以正常运行,并且不会报类型不匹配的错误。如果你仍然遇到 "Expected 1 arguments, but got 2" 的提示,尝试重启你的 IDE 或者重新加载项目,有时候这些工具会有缓存问题。
如果问题依然存在,检查一下你的 tsconfig.json 文件,确保没有对参数数量做额外的限制或者其他相关的配置问题。
greet函数了,或者有重载声明冲突。试试把这段代码单独放一个文件里跑:
要是还报错就检查下全局类型声明或者有没有同名函数,这语法绝对没问题。