Я хотел бы опубликовать sh пакет NPM (написанный на Typescript), который выглядит следующим образом:
const networks = { main: 1, test: 2, dev: 3 }
const resource = {
foo: {
[networks.main]: "hello",
[networks.test]: "there",
[networks.dev]: "friend"
},
bar: {
[networks.main]: "how",
[networks.test]: "are",
[networks.dev]: "you"
},
baz: {
[networks.main]: "have a",
[networks.test]: "good",
[networks.dev]: "day"
}
}
И я хочу убедиться, что пользователь может настроить сеть один раз, а не надо беспокоиться о том, в какой сети они находятся:
const myMainResource = getResourceFor(networks.main)
const myTestResource = getResourceFor(networks.test)
const myDevResource = getResourceFor(networks.dev)
console.log(myMainResource.foo) // "hello"
console.log(myTestResource.foo) // "there"
console.log(myDevResource.foo) // "friend"
Таким образом, вместо того, чтобы писать resource.foo[networks.main]
, они могут просто написать resource.foo
и получить то же самое.
Реальный объект на самом деле гораздо больше вложен, например: alice.contracts.foo
, bob.protocol.bar
, et c. Но как хранятся данные, сеть всегда находится на конечном узле дерева.
Я уже написал функцию getResourceFor
, и она работает, как и ожидалось, повторяя все ресурсы и заменяя сети (именно поэтому данные «генерируются» во время выполнения).
Но я также хочу, чтобы в редакторе автоматически выполнялась работа (с использованием кода VS). А поскольку объект создается динамически во время выполнения, редактор не может точно знать форму получающегося объекта JSON.
Каков наилучший способ приблизиться к этому?
Если вы хотите увидеть реальный код, это здесь: https://github.com/studydefi/money-legos