带有接口的Typescript中的Json枚举?

Posted

技术标签:

【中文标题】带有接口的Typescript中的Json枚举?【英文标题】:Enum in Json in Typescript with Interface? 【发布时间】: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

【问题讨论】:

这能回答你的问题吗? How do I convert a string to enum in TypeScript? 谢谢,没有。我读了它,但我的主要问题似乎是这里的 json 转换器,而不是打字稿本身 是不是 Caroline 指出的案例问题? AI 已经回答:不,不是。 错过了,抱歉。看看这个***.com/questions/35760096/… Enum in Json in Typescript with Interface? 【参考方案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 中已经是大写了,所以它们匹配

以上是关于带有接口的Typescript中的Json枚举?的主要内容,如果未能解决你的问题,请参考以下文章

使用带有递归 JSON 的 Typescript 接口

如何在带有接口的 Typescript 中声明公共和私有变量?

将 json 解析为 typescript 中的接口并检查是不是正常

将 json 数据更改为 Angular 2 中的 Typescript 接口对象

Typescript:使用枚举的自定义接口类型

如何使用实现接口制作 Typescript 枚举