Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript中数据库的枚举_Typescript - Fatal编程技术网

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文档之后是有意义的,它说你不能在同一个可索引的东西中混合一些类型描述和类型编号。但我确实实现了更好的东西(见上文)。