我正在使用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('./'));
});