为什么从角度导出枚举会导致运行时错误? Intellisense可以正常工作,但是在运行时,无论我使用导出枚举的位置如何,它都无法找到名称空间。但是它适用于从命名空间导出的接口。
检查此堆叠闪电战https://stackblitz.com/edit/angular-enum-within-namespace
我已经从 User 名称空间(文件:user.ts)导出了两个实体
declare namespace User {
export enum eUserType {
Driver = 1,
Passenger = 2,
User = 3
}
export interface Profile {
firstName: string;
lastName: string;
}
}
当尝试在AppComponent中使用它时(文件:app.component.ts)
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
constructor() {
this.displayUser();
// uncommenting following piece of code is causing an error ...
// ==> this.displayUserType();
}
displayUserType() {
const newVariable = User.eUserType.Driver;
console.log(newVariable);
}
displayUser() {
const profile = <User.Profile> {
firstName: "John",
lastName: "Doe"
};
console.log("profile:", profile);
}
}
取消注释 this.displayUserType()函数时,您会在控制台 未定义用户
中看到错误答案 0 :(得分:0)
您可以将名称空间声明更改为export namespace User {...}
而不是declare namespace User {...}
,然后将其导入模块中,如下所示:
import { User } from './user'
这是您的Stackblitz的修改示例