在TypeScript.2.7中找不到名称“ TextDecoder”

时间:2018-08-09 19:43:06

标签: angular typescript

我正在创建Angular 6应用程序(使用TypeScript 2.7),并希望使用TextDecoder本机函数。当我运行ng build --aot时,收到错误消息:错误TS2304:找不到名称'TextDecoder'。

任何帮助将不胜感激。以下是我的tsconfig.json文件和来自package.json文件的软件包列表。

谢谢, 鲍勃

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2017",
      "dom"
    ]
  }
}

  "dependencies": {
    "@angular/animations": "^6.0.5",
    "@angular/cdk": "^6.2.1",
    "@angular/common": "^6.0.3",
    "@angular/compiler": "^6.0.3",
    "@angular/core": "^6.0.3",
    "@angular/forms": "^6.0.3",
    "@angular/http": "^6.0.3",
    "@angular/material": "^6.2.1",
    "@angular/platform-browser": "^6.0.3",
    "@angular/platform-browser-dynamic": "^6.0.3",
    "@angular/router": "^6.0.3",
    "bootstrap": "^4.1.1",
    "core-js": "^2.5.4",
    "hammerjs": "^2.0.8",
    "npm": "^6.1.0",
    "rxjs": "^6.0.0",
    "zone.js": "^0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.6.8",
    "@angular/cli": "~6.0.8",
    "@angular/compiler-cli": "^6.0.3",
    "@angular/language-service": "^6.0.3",
    "@types/jasmine": "~2.8.6",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^10.5.7",
    "codelyzer": "~4.2.1",
    "jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.3.0",
    "ts-node": "~5.0.1",
    "tslint": "~5.9.1",
    "typescript": "~2.7.2"
  }
}

4 个答案:

答案 0 :(得分:1)

TextDecoder的声明仅在TypeScript 2.8和更高版本中存在。您需要升级TypeScript或将相关声明从here复制到您的项目中。

答案 1 :(得分:0)

您需要将输出捆绑包的设置更改为ES7。转到src/tsconfig.app.json并添加到editorOptions:

"compilerOptions": {
    "lib": [
          "es2017",
          "dom"
        ]
...

答案 2 :(得分:0)

将此内容写在component.ts之上:对于Angular 5或更早版本

declare var TextDecoder: any

解决打字稿问题-2.5.x

请参阅typescript getting error TS2304: cannot find name ' require'上的帖子

答案 3 :(得分:0)

我在这里找到了解决方案: https://stackoverflow.com/a/58490704/9091402

要在 TypeScript 2.7 中使用 TextDecoder,请将 window 定义为 any

const textDecoder = new (window as any).TextDecoder('utf-8');