【问题标题】:How to use enums in angular 5如何在 Angular 5 中使用枚举
【发布时间】:2018-05-08 01:34:41
【问题描述】:

我似乎无法找到一个直接的答案,说我有这个枚举

public enum DisplayType { Something, Another, More };

如何在我的角度 ts 文件中使用它?

我已经尝试过这样做..

import { ... } from '';
import { DisplayType } from '...' 
...

enum DisplayType { Something, Another, More }

@Component({
...

export class ...

constructor(){}

ngOnIt() {
   someFunction(DisplayType.Something).subscribe(() => {});
}

这就是服务中枚举的样子

export enum DisplayType {
 _0 = 0, 
 _1 = 1, 
 _2 = 2, 
}

但这似乎不起作用我收到一个错误

[ts] Argument type of 'DisplayType.Something' is not assignable to paramter of type 'DisplayType'.
enum DisplayType

我不确定我做错了什么?

编辑

我已经尝试过..

const enum DisplayType { Something, Another, More }

但我仍然遇到同样的错误,我也尝试过这样做

enum DisplayType { Something, Another, More }

export class...
DisplayType: any = DisplayType;

ngOnIt() {
   someFunction(this.DisplayType.Something).subscribe(() => {});
}

哪个没有错误,但是当我将鼠标悬停在它上面时,我得到(property) DashboardAlertComponent.DisplayType: any,但它不应该说DisplayType.Something = 1 什么的吗?

任何帮助将不胜感激!

【问题讨论】:

  • 我总是写const enum DisplayType { ... }。希望这会有所帮助。
  • @motss 我仍然遇到同样的错误
  • 你确定你在someFunction中引用了同一个DisplayType吗?
  • 你如何定义你的函数someFunction?
  • 对于不必要的投票+1

标签: javascript angular typescript enums


【解决方案1】:

您的服务定义了一个DisplayType,但您也创建了自己的DisplayType。仅仅因为这两种类型具有相同的名称并不意味着它们相同。

从服务中导入DisplayType 并使用它。

import { DisplayType } from 'service.ts';
someFunction(DisplayType._0);

如果您需要使用自己的枚举,您可以将其作为 any 传递,但要确保枚举值正确对齐

someFunction(MyDisplayType.Something as any)

【讨论】:

  • 抱歉,似乎任何错误都已清除,我得到了正确的枚举名称数值,as any 是做什么的?
  • @JuvenileSnow 使用as any 告诉编译器MyDisplayType.Something 可以是任何类型,我们不能确定它,所以不要对其进行任何类型检查。谨慎使用它,因为它有点违背了使用 typescript 的目的。
猜你喜欢
  • 2018-10-25
  • 1970-01-01
  • 2019-10-17
  • 2020-10-19
  • 2016-11-02
  • 2015-09-24
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多