'arguments' 对象不能在 ES3 和 ES5 的箭头函数中引用。考虑使用标准函数表达式
The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression
目前正在构建示例白板项目并遇到打字稿问题
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 和打字稿中剩余参数功能的可用性。
事实上 arguments 对象用于 ES3 和 ES5 中参数数量可变的函数不应该让你在打字稿中使用它。
对于打字稿中参数数量可变的函数,您应该使用rest parameters。 Typescript 编译器会将其编译为:
- Js rest parameters ES2015 目标
- 带有 ES3 或 ES5 目标的参数对象
var format = (formatString: string, ...params: any[]): string => {
var i = 0;
while (/%s/.test(formatString)) {
formatString = formatString.replace('%s', params[i++]);
}
return formatString;
};
目前正在构建示例白板项目并遇到打字稿问题
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 和打字稿中剩余参数功能的可用性。
事实上 arguments 对象用于 ES3 和 ES5 中参数数量可变的函数不应该让你在打字稿中使用它。
对于打字稿中参数数量可变的函数,您应该使用rest parameters。 Typescript 编译器会将其编译为:
- Js rest parameters ES2015 目标
- 带有 ES3 或 ES5 目标的参数对象
var format = (formatString: string, ...params: any[]): string => {
var i = 0;
while (/%s/.test(formatString)) {
formatString = formatString.replace('%s', params[i++]);
}
return formatString;
};