javascript - Promise resolve har ett fel i TypeScript eftersom något typ saknas


Jag använder gulp för att kompilera TS-filer till JS och för denna kod:

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

Kompileringen har detta fel:

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

Det betyder att jag bör använda any-typen så här:

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

Men varför ska jag använda any i det här fallet? när jag använder Promise<string> för att definiera Promisen?

beroenden :

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

Tack

Svar #1

Det ser ut som att TS-kompilatorn inte känner igen typen Promise. Den mest sannolika orsaken till detta är bristen på eller felaktig konfiguration. Jag skulle anta att TS kompilerar för ES5 där promises inte är definierade. Försök att uppdatera din tsconfig.json som beskrivs på denna sida. Dvs. lägg till följande i tsconfig.json

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

Svar #2

Jag har redigerat gulpfile.js och löst:

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

Relaterade artiklar