Promise resolve在TypeScript中出现错误,因为遗漏了任何类型



我正在使用gulp将TS文件编译为JS,对于这段代码:

function Hello(): Promise<string> {
return new Promise(resolve => {
setTimeout(() => {
resolve('Hello, World!');
}, 3000);
});
}

编译错误:

error TS7006: Parameter 'resolve' implicitly has an 'any' type.

这意味着,我应该这样使用any类型:

return new Promise((resolve: any) => {

但为什么我应该使用any在这种情况下?当我使用Promise<string>来定义承诺?

依赖性:

"dependencies": {
"gulp": "^4.0.2",
"gulp-typescript": "^6.0.0-alpha.1",
"typescript": "^3.9.5"
}

感谢

看起来TS编译器不识别Promise类型。最有可能的原因是缺乏或不正确的配置。我假设TS正在编译ES5,其中承诺没有定义。尝试按照本页的描述更新您的tsconfig.json。例如,将以下内容添加到tsconfig.json

"compilerOptions": {
"target": "ES6"
}

我已经编辑了gulpfile.js并解决了:

gulp.task('ts', function () {
return gulp.src('*.ts')
.pipe(ts({
noImplicitAny: true,
outFile: 'output.js',
target: 'ES6'
}))
.pipe(gulp.dest('./'));
});

相关内容

最新更新