TypeScript - 针对 es2018 时,其余运算符行为不起作用

标签 typescript

此代码可在 TypeScript Playground 中运行...

class Foo {
    constructor(...args: any[]) {

    }

    static make(...args: any[]): Foo {
        return new Foo(...args);
    }
}

Example

...但是当它位于 Visual Studio 中的 TypeScript 项目中时它不起作用。我在语句 return new Foo(...args);

中收到以下 args 错误

Type must have a 'Symbol.iterator' method that returns an iterator.

这里有什么?

在本地计算机上运行 TypeScript 2.7。当我将构建目标更改为 es2018

时出现问题

最佳答案

这似乎是编译器中的错误,es2018 的默认库不正确。来自撰写本文时的编译器代码:

export function getDefaultLibFileName(options: CompilerOptions): string {
    switch (options.target) {
        case ScriptTarget.ESNext:
            return "lib.esnext.full.d.ts";
        case ScriptTarget.ES2017:
            return "lib.es2017.full.d.ts";
        case ScriptTarget.ES2016:
            return "lib.es2016.full.d.ts";
        case ScriptTarget.ES2015:
            return "lib.es6.d.ts";  // We don't use lib.es2015.full.d.ts due to breaking change.
        default:
            return "lib.d.ts";
    }
}

缺少 es2018 的选项。您可以手动指定适当的库:

{
    "compilerOptions": {
        "target": "es2018",
        "lib": [
            "es2018",
            "dom"
        ]
    }
}

关于TypeScript - 针对 es2018 时,其余运算符行为不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039308/

相关文章:

postgresql - 环回 4 - 字段中包含的 HasMany 关系

javascript - 在 Angular 7 中填充对象模型

JavaScript/ typescript : Created Doubly-Sorted Tree from List

angular - 使用 Angular Service Worker 发送 JWT token

angular - 如何在不使用angular 2+中的ngmodel的情况下为输入设置一个值

typescript - angular2 类型 'Subject<{}>' 不可分配给类型 '() => Subject<number>'

javascript - 如何比较和过滤es6中两个对象数组中不匹配的数组

javascript - 如何在 angular2 [typescript] 中定义具有复杂 json 结构的模型?

javascript - 如何在日期选择器中获取特定的 future 日期

javascript - Electron 不执行对本地 spring 服务器的 https 调用,curl 可以工作