Typescript编译器提供了一个for code containsg生成器函数

时间:2018-10-25 17:27:11

标签: typescript

我正在学习打字稿,在此期间,我遇到了生成器的概念。

尝试使用以下代码

function* infiniteSequence() {
    var i = 0;
    while(true) {
        yield i++;
    }
}

var iterator = infiniteSequence();
while (true) {
    console.log(iterator.next()); // { value: xxxx, done: false } forever and ever
}

但是当尝试使用tsc编译代码时,它给了我这个错误

error TS2339: Property 'next' does not exist on type '{}'.

但是生成的js代码运行正常

我正在使用ts版本3.1和节点8.12

我的tsconfig文件看起来像这样

 {
  "compilerOptions": {
    /* Basic Options */
    "target": "es6",                          /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
    "module": "commonjs",                     /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
    "lib": ["es6"],                             /* Specify library files to be included in the compilation. */
    "strict": true,                           /* Enable all strict type-checking options. */
    "esModuleInterop": true                   /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
  }
}

有人可以告诉我我做错了什么,为什么它显示错误?

通过在lib中添加es6来更新tsconfig,仍然是相同的错误

1 个答案:

答案 0 :(得分:0)

您应将“ es6”添加到“ lib”选项中,如下所示:

{
  "compilerOptions": {
    "lib": [
      "es6"
    ],
...