Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除具有新集合的数组中的重复项会导致错误_Javascript_Typescript_Spread Syntax - Fatal编程技术网

Javascript 删除具有新集合的数组中的重复项会导致错误

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来修复错误。这是一个超级简单的配

我试图删除具有新集合的数组中的重复项,但出现错误“new Set(names)。slice不是函数”


下面是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"
  }
}