带有接口的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枚举?的主要内容,如果未能解决你的问题,请参考以下文章
如何在带有接口的 Typescript 中声明公共和私有变量?
将 json 解析为 typescript 中的接口并检查是不是正常