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