如何在打字稿中定义这个模型
How do define this model in typescript
我有一个 json 模型,看起来像这样
{
"loggers" : {
"logger1" : {
"name" : "logger1",
"level" : "DEBUG",
"sub_loggers" :{
"logger1.nested_logger1" : {
"name": "logger1.nested_logger1",
"level": "INFO"
},
"logger1.nested_logger2" : {
"name": "logger1.nested_logger2",
"level": "INFO",
"sub_loggers": {
"logger1.nested_logger2.more_of_that" : {
"name": "logger1.nested_logger2.more_of_that",
"level": "INFO"
}
}
}
}
},
"logger2" : {
"name": "logger2",
"level": "WARN"
}
}
}
我想在从变量中的 HTTP 请求中收到模型时保存它,但我希望它被映射,所以我不必使用 any
。
如果有办法把它分成两个模型,我更想要,
我只是不知道如何映射它,因为 sub_loggers
不是数组,它是一个对象,其键名也是它们所代表的记录器的名称。
这是一种选择:
type Level = "DEBUG" | "INFO" | "WARN" | "ERROR";
type Loggers = {
[name: string]: Logger;
}
interface Logger {
name: string;
level: Level;
sub_loggers?: Loggers;
}
let json = YOUR_JSON as { loggers: Loggers };
let loggers: Loggers = json["loggers"];
编辑
回答您的评论问题:
- 是的,
?
标记了 optional property。
- 我根本没用过类,我用过interfaces and type aliases。
链接文档中解释了接口和类型别名之间的区别。
我没有使用 类 因为从你的问题看来你只是在寻找代表你的 json 结构以便编译器将使用类型安全。
如果您需要实际实例以便拥有功能(方法)而不仅仅是数据对象,那么您需要使用 类.
我有一个 json 模型,看起来像这样
{
"loggers" : {
"logger1" : {
"name" : "logger1",
"level" : "DEBUG",
"sub_loggers" :{
"logger1.nested_logger1" : {
"name": "logger1.nested_logger1",
"level": "INFO"
},
"logger1.nested_logger2" : {
"name": "logger1.nested_logger2",
"level": "INFO",
"sub_loggers": {
"logger1.nested_logger2.more_of_that" : {
"name": "logger1.nested_logger2.more_of_that",
"level": "INFO"
}
}
}
}
},
"logger2" : {
"name": "logger2",
"level": "WARN"
}
}
}
我想在从变量中的 HTTP 请求中收到模型时保存它,但我希望它被映射,所以我不必使用 any
。
如果有办法把它分成两个模型,我更想要,
我只是不知道如何映射它,因为 sub_loggers
不是数组,它是一个对象,其键名也是它们所代表的记录器的名称。
这是一种选择:
type Level = "DEBUG" | "INFO" | "WARN" | "ERROR";
type Loggers = {
[name: string]: Logger;
}
interface Logger {
name: string;
level: Level;
sub_loggers?: Loggers;
}
let json = YOUR_JSON as { loggers: Loggers };
let loggers: Loggers = json["loggers"];
编辑
回答您的评论问题:
- 是的,
?
标记了 optional property。 - 我根本没用过类,我用过interfaces and type aliases。
链接文档中解释了接口和类型别名之间的区别。
我没有使用 类 因为从你的问题看来你只是在寻找代表你的 json 结构以便编译器将使用类型安全。
如果您需要实际实例以便拥有功能(方法)而不仅仅是数据对象,那么您需要使用 类.