打字稿:如何基于枚举创建接口

时间:2020-06-18 02:24:44

标签: node.js typescript types

我有一个枚举EEndpoints映射到本地节点的字符串地址。我想基于此枚举创建一个接口/硬编码对象。这是我的主意:

export enum EEndpoints
{
    MY_REMOTE_NODE = "MY_REMOTE_NODE",
}

export interface EndpointAddresses
{
    PublisherAddress: string,
    RequestAddress: string,
}

export interface EndpointAddressList
{
    for (key in EEndpoints)
    {
        [key] = EndpointAddresses;
    }
}

然后在我的代码中,我需要定义一个实现EndpointAddressList的常量:

const RemoteNodeEndpoints: EndpointAddressList =
{
    MY_REMOTE_NODE: {
        PublisherAddress: "tcp://127.0.0.1:3000",
        RequestAddress: "tcp://127.0.0.1:3001",
    },
}

或者,最好定义一个本身实现EndpointAddressList的接口,即:

interface ImplementedEndpointAddressList
{
    MY_REMOTE_NODE: {
        PublisherAddress: "tcp://127.0.0.1:3000",
        RequestAddress: "tcp://127.0.0.1:3001",
    },
}

如果使用enum作为接口属性的基础是反模式,我也很乐意反馈。但是,对于我来说,集中定义一组硬编码的端点,然后进行编译时检查以确认我已配置了这些端点的子属性,这似乎是一个有用的工具。

0 个答案:

没有答案