Javascript 删除具有新集合的数组中的重复项会导致错误
我试图删除具有新集合的数组中的重复项,但出现错误“new Set(names)。slice不是函数”Javascript 删除具有新集合的数组中的重复项会导致错误,javascript,typescript,spread-syntax,Javascript,Typescript,Spread Syntax,我试图删除具有新集合的数组中的重复项,但出现错误“new Set(names)。slice不是函数” 下面是stackblitz当您的代码经过构建阶段并从TypeScript转换为JavaScript时,您发布的第二行变成: var uniq = new Set(names).slice(); 我个人认为这是一个排字错误,但我从不使用打字稿,所以我不能肯定。 编辑-事实上,我认为这不会发生,除非您针对ES5。我能够通过在项目根目录中添加tsconfig.json来修复错误。这是一个超级简单的配
下面是stackblitz当您的代码经过构建阶段并从TypeScript转换为JavaScript时,您发布的第二行变成:
var uniq = new Set(names).slice();
我个人认为这是一个排字错误,但我从不使用打字稿,所以我不能肯定。
编辑-事实上,我认为这不会发生,除非您针对ES5。我能够通过在项目根目录中添加
tsconfig.json
来修复错误。这是一个超级简单的配置:
{
"compilerOptions": {
"target": "es6"
}
}
正在发生的事情是,TypeScript正在编译成一个
es3
版本的javascript,如果没有将任何目标配置为(请参见--target
)。使用数组。从(新集(名称))
-它也更可读:-)是的,您是对的。看起来像是一个“优化”其中,扩展语法仅在数组上受支持,而不支持任意的iterables。@Bergi是的,如果TypeScript的目标是ES6,它的工作方式可能会有所不同;我对此了解不多,在链接的角度设置中也看不到任何明显的关于如何影响TypeScript构建步骤的内容。关于这种行为,(至少)有一个公开问题:@Pointy您的答案非常有用。
{
"compilerOptions": {
"target": "es6"
}
}