TS1086:无法在环境上下文中声明访问器

时间:2019-12-27 14:27:06

标签: javascript angular typescript

使用Angular运行时,出现Javascript getters and setters in this Abstract Typescript class的错误TS1086: An accessor cannot be declared in an ambient context.

这是来源:


  /**
   * The current id key for the EStore instance.
   * @return this.config.idKey;
   */
  get ID_KEY(): string {
    return this.config.idKey
  }
  /**
   * The current guid key for the EStore instance.
   * @return this.config.guidKey;
   */
  get GUID_KEY(): string {
    return this.config.guidKey
  }

直到最新版本的Angular都运行良好。我们不再允许在Abstract类中使用getter和setter吗?

2 个答案:

答案 0 :(得分:1)

这不是Angular错误。

TypeScript 3.7对类型定义文件中的getter和setter进行了重大更改。

  

如上所述,TypeScript 3.7在.d.ts文件中发出get / set访问器,这可能导致使用方3.5和更低版本的TypeScript的使用者发生重大更改。 TypeScript 3.6用户将不会受到影响,因为该版本已针对该功能在将来进行过验证。

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#class-field-mitigations

如果要使用3.7或更高版本生成的类型定义,则应该使用TypeScript 3.6或更高版本。

答案 1 :(得分:0)

我在google-auth-library中也遇到了类似的问题。

我正在Ubuntu上,并调用tsc将我的nodejs服务器从打字稿转换为javascript,但是运行'tsc'会抛出'TS1086:无法在环境上下文中声明访问器”错误。

最初,我尝试通过从服务器目录运行npm install typescript @ latest来更新Typescript,但仍然看到错误。

我必须更新我的打字稿的全局版本,以便可以运行“ tsc”,但是运行npm install typescript @ latest -g也会引发错误。我必须删除/ usr / bin /中的tsc链接。

我做了什么修复:

$ cd /usr/bin
$ sudo rm tsc
$ sudo npm install -g typescript@latest

此后,调用“ tsc”的操作没有错误。