TypeScript中数据库的枚举
我从我的服务器收到了以下表单中的一些参考数据:TypeScript中数据库的枚举,typescript,Typescript,我从我的服务器收到了以下表单中的一些参考数据: interface Status { id: number; code: string; description: string; } 在JavaScript中,我将通过以下操作将其转换为枚举样式的引用: let as = resp.data as Status[]; let statuses: any = {}; statuses.descriptions = {}; for (let a of as) { st
interface Status {
id: number;
code: string;
description: string;
}
在JavaScript中,我将通过以下操作将其转换为枚举样式的引用:
let as = resp.data as Status[];
let statuses: any = {};
statuses.descriptions = {};
for (let a of as) {
statuses[a.code] = a.id;
statuses.descriptions[a.id] = a.description;
}
这样我就可以写:
statuses.ONE_STATUS
我会拿回唱片的id。这使得通过记录的“代码”(即象征性地)来引用记录变得很容易,而不是在设置外键等时假定数据库中记录的ID
现在我正在将其转换为TypeScript,但我不知道如何编写此代码,也不使用any类型作为状态
有什么建议吗
---更新---
似乎我不能得到我想要的,但我可以做到:
interface Status {
id: number;
description: string;
}
interface Statuses {
[statusIndex: string]: Status;
}
然后我可以用以下内容填充:
let statuses: Statuses;
for (let a of as) {
statuses[a.code].id = a.id;
statuses[a.code].description = a.description;
}
这并不是我想要的,但它确实做到了:
statuses.ONE_STATUS.id or statuses["ONE_STATUS"].id
获取身份证,以及
statuses.ONE_STATUS.description
为了得到描述
字典法是我在C#中应该做的,所以我觉得很自在:)
这使得通过记录的“代码”(即象征性地)来引用记录变得很容易,而不是在设置外键等时假定数据库中记录的ID
如果您希望能够写入状态。一个状态
,则状态
必须是枚举。e、 g
enum statuses {
ONE_STATUS;
}
最简单的方法如下:
interface Descriptions {
[index: number]: string;
}
interface Statuses {
descriptions: Descriptions;
[index: string]: number;
}
let statuses: Statuses = {descriptions: {}}
通过这种方式,您可以使用任意字符串和数字键查询
状态
和状态。说明
。我想通过使用来改进这一点,但TS似乎还不支持将它们作为键。对不起,您理解这个问题吗?在您的变体中,STATUS.ONE_STATUS
是编译时常量,即使enum
本身未声明为const
。这与OP要求的“记录id”不同。谢谢。直到今天我才知道可转位类型。然而,这是行不通的。我得到:类型为“description”的属性“description”不能分配给字符串索引类型“number”。这在阅读了Typescript文档之后是有意义的,它说你不能在同一个可索引的东西中混合一些类型描述和类型编号。但我确实实现了更好的东西(见上文)。