我正在上下面的打字课

export class Vehicule extends TrackableEntity {
  vehiculeId: number;
  constructor() {
    super();
    return super.proxify(this);
  }
}

我在tsconfig中的typescript目标.json配置为es6:

"compilerOptions": {
    "module": "es2015",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
}

在运行时,在Chrome中,代码失败:

ReferenceError: Cannot access 'Vehicule' before initialization
    at Module.Vehicule (https://localhost:44338/src-app-components-dispositifsDATI-dispositifsDATI-module.js:10559:100)
    at Module../src/app/domain/models/VehiculeGpsBoxInfo.ts (https://localhost:44338/src-app-components-dispositifsDATI-dispositifsDATI-module.js:11156:69)
    at __webpack_require__ (https://localhost:44338/runtime.js:84:30)
    at Module../src/app/domain/models/Vehicule.ts (https://localhost:44338/src-app-components-dispositifsDATI-dispositifsDATI-module.js:10571:78)
    at __webpack_require__ (https://localhost:44338/runtime.js:84:30)
    at Module../src/app/components/dispositifsDATI/mainDATI/listDATI/listDATI.component.ts (https://localhost:44338/src-app-components-dispositifsDATI-dispositifsDATI-module.js:6447:82)
    at __webpack_require__ (https://localhost:44338/runtime.js:84:30)
    at Module../src/app/components/dispositifsDATI/index.ts (https://localhost:44338/src-app-components-dispositifsDATI-dispositifsDATI-module.js:3053:95)
    at __webpack_require__ (https://localhost:44338/runtime.js:84:30)
    at Module../src/app/components/dispositifsDATI/dispositifsDATI.routes.ts (https://localhost:44338/src-app-components-dispositifsDATI-dispositifsDATI-module.js:2982:64)

我需要把es5改成es6来解决this other problem题.


编辑:

import { Vehicule } from "./Vehicule";

编辑2:我想说这可能与网页包有关,即在genrated模块中导出/导入模块的方式.

编辑3:经过进一步研究,这似乎与上面显示的代码无关.开始一个关于webpack and ES6的新问题.

推荐答案

你可能会遇到这个问题:https://github.com/angular/angular-cli/issues/15077.

从这个问题:

嗨,有什么理由让你需要真实的数据吗?

此TypeScript选项对ES2015+代码有一个基本的设计限制,在针对此类输出时最好避免.因此,这是TypeScript本身的问题,而不是Angular 问题.

Angular 8+不再需要该选项.JIT通常仅用于开发模式中.

解决方案是在tsconfig中设置"emitDecoratorMetadata": false.json文件.

Side note:

Typescript相关问答推荐

如何基于对象关键字派生类型?

更新:Typescript实用程序函数合并对象键路径

带有联合参数的静态大小数组

angular 17独立使用多个组件(例如两个组件)

在类型内部使用泛型类型时,不能使用其他字符串索引

泛型和数组:为什么我最终使用了`泛型T []`而不是`泛型T []`?<><>

为什么typescript不能推断类的方法返回类型为泛型''

如何在TypeScrip面向对象程序设计中用方法/属性有条件地扩展类

如何根据模板类型实现不同的模板函数行为?

类型脚本满足将布尔类型转换为文字.这正常吗?

扩展参数必须具有元组类型或传递给REST参数

从泛型类型引用推断的文本类型

TypeScrip:从对象中提取和处理特定类型的键

使用条件类型的类型保护

如何从接口中省略接口

类型实例化过深,可能是无限的&TypeScrip中的TupleUnion错误

字幕子集一个元组的多个元素

如何在本地存储中声明该类型?

窄SomeType与SomeType[]

通过辅助函数获取嵌套属性时保留类型