首页 > 解决方案 > 从 Angular 9 升级到 Angular 11 后,类型上不存在错误属性“emit”

问题描述

我最近将我的 Angular 库从 Angular 9 升级到 Angular 11,它抛出一个错误 Property 'emit' does not exist on type A

export class A extends B {

protected method1() {
this.emit(); // this is where the error is thrown
}

}

以下是我的A类

import { EventEmitter } from 'events';

export abstract class B extends EventEmitter {

}

以下是我的 package.json

"dependencies": {
    "@angular/animations": "^11.2.14",
    "@angular/cdk": "^11.2.13",
    "@angular/common": "^11.2.14",
    "@angular/compiler": "^11.2.14",
    "@angular/core": "^11.2.14",
    "@angular/forms": "^11.2.14",
    "@angular/material": "^11.2.13",
    "@angular/platform-browser": "^11.2.14",
    "@angular/platform-browser-dynamic": "^11.2.14",
    "@angular/router": "^11.2.14",
    "@egjs/hammerjs": "^2.0.17",
    "@fortawesome/angular-fontawesome": "^0.6.1",
    "@fortawesome/fontawesome-svg-core": "^1.2.28",
    "@fortawesome/free-brands-svg-icons": "^5.13.0",
    "@fortawesome/free-regular-svg-icons": "^5.13.0",
    "@fortawesome/free-solid-svg-icons": "^5.13.0",
    "@ng-bootstrap/ng-bootstrap": "^7.0.0",
    "ace-builds": "^1.4.9",
    "bootstrap": "^4.5.0",
    "cytoscape": "^3.14.1",
    "cytoscape-cise": "^1.0.0",
    "cytoscape-cola": "^2.3.0",
    "cytoscape-cose-bilkent": "^4.1.0",
    "cytoscape-dagre": "^2.2.2",
    "cytoscape-fcose": "^1.2.1",
    "keycharm": "^0.2.0",
    "moment": "^2.24.0",
    "rxjs": "^6.5.5",
    "time-ago-pipe": "^1.3.2",
    "tslib": "^2.0.0",
    "vis-data": "^7.0.0",
    "vis-network": "^8.0.0",
    "vis-util": "^4.3.4",
    "zone.js": "^0.10.3"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "^0.1102.14",
    "@angular/cli": "^11.2.14",
    "@angular/compiler-cli": "^11.2.14",
    "@angular/language-service": "^11.2.14",
    "@semantic-release/changelog": "^5.0.1",
    "@semantic-release/git": "^9.0.0",
    "@types/cytoscape": "^3.14.0",
    "@types/jasmine": "~3.6.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.12.35",
    "codelyzer": "^6.0.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~5.0.0",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-edgium-launcher": "^4.0.0-0",
    "karma-firefox-launcher": "^1.3.0",
    "karma-ie-launcher": "^1.0.0",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "karma-junit-reporter": "^2.0.1",
    "karma-spec-reporter": "0.0.32",
    "ng-bullet": "^1.0.3",
    "ng-packagr": "^11.0.0",
    "protractor": "~7.0.0",
    "puppeteer": "^5.5.0",
    "semantic-release": "^17.1.1",
    "ts-node": "~7.0.0",
    "tslint": "~6.1.0",
    "typescript": "~4.1.6"
  },

下面的 emit() 函数在 Angular 版本 9 上运行良好,但在迁移到 Angular 11 后,它开始抛出错误。有人可以帮我解决这个问题并解释为什么会这样吗?

标签: node.jsangularangular11typescript4.0

解决方案


推荐阅读