首页 > 解决方案 > '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;
};

我检查了堆栈溢出的类似问题,但没有得到具体答案

标签: asp.net-mvctypescriptarrow-functions

解决方案


您正在混淆 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;
};

游乐场链接


推荐阅读