У меня есть перечисление 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
в качестве основы для свойств в интерфейсе является анти-шаблоном. Однако мне кажется полезным инструментом централизованное определение набора жестко запрограммированных конечных точек, а затем проверка времени компиляции того, что я настроил подсвойства этих конечных точек.