asp.net-mvc - 'arguments' 对象不能在 ES3 和 ES5 的箭头函数中被引用。考虑使用标准函数表达式
问题描述
目前正在构建一个示例白板项目并面临打字稿问题
var format = (formatString, ...params: any[]): string => {
var i = 0;
while (/%s/.test(formatString)) {
formatString = formatString.replace('%s', arguments[++i]) --> Error at (arguments)
}
return formatString;
};
我检查了堆栈溢出的类似问题,但没有得到具体答案
解决方案
您正在混淆 JS 和 typescript 中剩余参数功能的可用性。
arguments对象用于 ES3 和 ES5 中参数数量可变的函数这一事实不应该让你在 typescript 中使用它。
对于 typescript 中参数数量可变的函数,您应该使用rest parameters。Typescript 编译器会将其编译为:
- 带有ES2015目标的js休息参数
- 带有 ES3 或 ES5 目标的 arguments 对象
var format = (formatString: string, ...params: any[]): string => {
var i = 0;
while (/%s/.test(formatString)) {
formatString = formatString.replace('%s', params[i++]);
}
return formatString;
};
推荐阅读
- python - 如何使用 matplotlib 在同一图上绘制多个轨迹
- sql - ORA-38104: ON 子句中引用的列无法更新 c.emp_id
- php - 如何在 laravel 在线直播服务器中安装 git-hub 包
- python - 分段操作“numpy.ndarray”和“str”不支持“>=”
- android - 如何在图像编辑器中设置 sourceImagePath、outputFile
- javascript - 无法单击 selenium webdriver 中的剑道下拉菜单
- excel - 当“On Error Resume Next”将先前的值留在变量中时,如何返回空白或零?
- php - 我可以在模型中添加新键吗?
- django - 在没有循环的情况下从模板中的数据库中获取内容?
- hyperledger-fabric - 使用 go sdk 开发一个超级账本结构链码好吗?