我正在学习打字稿,在此期间,我遇到了生成器的概念。
尝试使用以下代码
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,仍然是相同的错误
答案 0 :(得分:0)
您应将“ es6”添加到“ lib”选项中,如下所示:
{
"compilerOptions": {
"lib": [
"es6"
],
...