Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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 为什么ES6生成器函数在Angular 6和chrome开发工具上给了我不同的结果_Javascript_Angular_Typescript_Ecmascript 6 - Fatal编程技术网

Javascript 为什么ES6生成器函数在Angular 6和chrome开发工具上给了我不同的结果

Javascript 为什么ES6生成器函数在Angular 6和chrome开发工具上给了我不同的结果,javascript,angular,typescript,ecmascript-6,Javascript,Angular,Typescript,Ecmascript 6,发电机在角6/7中的运行非常混乱。我的任务只是从生成器函数打印一个简单数组。我在chrome开发者工具中成功地做到了这一点,如下所示 function* foo() { yield 'a'; yield 'b'; yield 'c'; } const values = [...foo()]; 但同样的事情,我不能在6/7的角度做。我得到一个编译错误,如下所示 [ts] Type 'IterableIterator<"a" | "b" | "c">' is not

发电机在角6/7中的运行非常混乱。我的任务只是从生成器函数打印一个简单数组。我在chrome开发者工具中成功地做到了这一点,如下所示

function* foo() {
   yield 'a';
   yield 'b';
   yield 'c';
}

const values = [...foo()];
但同样的事情,我不能在6/7的角度做。我得到一个编译错误,如下所示

[ts] Type 'IterableIterator<"a" | "b" | "c">' is not an array type.
[ts]类型“IterableTerator”不是数组类型。
从错误中,我可以理解这个问题。由于函数foo()每次只返回一个值a | b | c,因此不能对其使用数组运算符

但为什么在chrome开发者工具上也是如此呢?我们如何才能使它在Angular和chrome开发者工具上工作?

正如您所看到的,这是一个打字脚本问题

要解决此问题,您可以使用
--downlevelIteration
参数,也可以使用
Array.from
函数代替spread运算符

function* foo() {
    yield 'a';
    yield 'b';
    yield 'c';
}

const values = Array.from(foo());

首先,在浏览器的控制台中,您正在编写JavaScript。这里,您得到一个TypeScript错误。一种解决方案是检查编译器设置中的
downlevelIteration
选项。

要解决此问题,请转到tsconfig.json并将目标提到es6

{
  "compileOnSave": false,
  "compilerOptions": {
    "target": "es6"
  }
}

这是一个for-TypeScript:

我不知道angular是如何工作的,但它可能只允许元素在实际数组中扩散?ECMAScript规范当然允许任何iterable。