gpt4 book ai didi

TypeScript - 以 es2018 为目标时,rest 运算符行为不起作用

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:26 25 4
gpt4 key购买 nike

此代码适用于 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 为目标时,rest 运算符行为不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com