【问题标题】:Enum in Json in Typescript with Interface?带有接口的Typescript中的Json枚举?
【发布时间】:2021-04-06 19:16:28
【问题描述】:

我有一个如下所示的 json 文件:

{ 
     "ui": "Header"
}

而“ui”是一个枚举。 我使用 node.js 和 ts-loader 在我的 typescript webpack 环境中使用 JSON.Parse 加载这部分,所以我的错误是:

“类型 'string' 不可分配给类型 'UiDescriptionTypeEnum'。”

而我试图转换的界面是:

interface UI
{
     ui: UiDescriptionTypeEnum
}

虽然有这样的枚举:

enum UiDescriptionTypeEnum
{
     Header = "Header"
}

这是一个有错误的工作打字稿:

https://www.typescriptlang.org/play?#code/KYOwrgtgBAsgngUXBAsAKAN7qjqAJYAQwBNgAnKAXigCICTyb0BfddASxABdyAzQgMbBYcAJLc+g4eixpcUHgGcuALhFJILNmgBuhCgCtFAexBUoGBcGVqA5PVJlbUVmnQAbYFyiE18cTxk-ELmRqYA3EA

【问题讨论】:

标签: json typescript enums


【解决方案1】:

枚举中的值区分大小写

尝试重新定义枚举如下

enum UiDescriptionTypeEnum
{
     header = "header"
}

更新了链接中的示例

enum MyEnum
{
    Header = "Header"
}

interface MyInterface 
{
    test: MyEnum
}

var json = { test: 'Header' }
var jsonObj = {test: MyEnum.Header} // option 1:  to define the type from Enum

let a : MyInterface =  json as MyInterface; // option 2: cast js object to your interface ( a more likely scenario)

【讨论】:

  • 谢谢,没有解决我的问题,我只是在我的问题中有一个错字,“标题”在我的 json 中已经是大写了,所以它们匹配
猜你喜欢
  • 2020-11-15
  • 2020-10-26
  • 1970-01-01
  • 2020-03-14
  • 2017-01-28
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2019-09-24
相关资源
最近更新 更多