Angular 11:为什么编译器编译时找不到'GeolocationPosition'? "Cannot find name 'GeolocationPosition'"

Angular 11: Why can't the compiler find 'GeolocationPosition' during compiling? "Cannot find name 'GeolocationPosition'"

为什么 angular 编译器找不到 GeolocationPositionGeolocationPositionError? VSC 不会报错,只有在编译时才会报错。

Error: src/app/modules/shared/services/position.service.ts:10:46 - error TS2304: Cannot find name 'GeolocationPosition'.

10   private positionSource = new ReplaySubject<GeolocationPosition>(1);

我通过使用 any 类型来解决这个问题,但我很好奇为什么 Angular 会给我错误以及我该如何解决这个问题。

我已经尝试过不同的编译器目标(es5es6es2018)但没有成功。已经安装 @types/core-js 但也没有任何运气。有没有我遗漏的@types 模块?

这是我现在的tsconfig.json

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "sourceMap": true,
    "declaration": false,
    "downlevelIteration": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es5",
    "module": "es2020",
    "lib": [
      "es2018",
      "dom"
    ]
  },
  "angularCompilerOptions": {
    "strictInjectionParameters": true,
    "strictInputAccessModifiers": true,
    "strictTemplates": true
  }
}

我有同样的问题,我解决了更改项目使用的本地 Angular CLI。
解释:
我更新到 Angular 11,但我忘记更新 Angular CLI。 ng build 给了我这个输出:

Your global Angular CLI version (9.1.7) is greater than your local
version (9.1.0). The local Angular CLI version is used.

步骤
更新 Angular CLI(如有必要)

npm install -g @angular/cli

更新 npm

npm install -g npm

然后ng build输出变成:

Your global Angular CLI version (11.1.2) is greater than your local version (9.1.0). The local Angular CLI version is used.

安装 npm-check-updates

npm i -g npm-check-updates

执行 ncu -u 查看要更新的包。
执行 npm install 更新所有包。
在此之后,一切都应该工作。

在打字稿 4 中0.x 这种类型被称为 Position。在打字稿 4.1.x 中,它被重命名为 GeolocationPosition.

我认为您会发现您的 VS Code 使用的是其内置版本的打字稿,而您的项目使用的是早期版本。

修复:

npm install --save-dev typescript@4.1.2