était à la recherche de TypeScript Pour vérifier le type de fichier dans un fichier de configuration, comme ci-dessous:
interface IConfig { host: string; port: number; } const _config = { local: { // <-- I would like to annotate this object with type IConfig host: 'localhost', port: 1234 }, dev: { // <-- I would like to annotate this object with type IConfig host: 'https://dev.myapp.com', port: 80 }, prod: { // <-- I would like to annotate this object with type IConfig host: 'https://prod.myapp.com', port: 80 }, } export const config = _config[process.env.NODE_ENV || 'dev'];
4 Réponses :
Avez-vous essayé d'utiliser une interface pour l'objet de configuration lui-même? Afin que vous puissiez faire quelque chose comme
Merci! Voir aussi mon autre réponse
Une solution possible consiste à annoter l'objet parent:
Vous pouvez utiliser une signature d'index et fournir une interface pour la configuration complète.
interface Environment { host: string; port: number; } interface Config { [name: string]: Environment; } const _config: Config = { local: { host: 'localhost', port: 1234 }, dev: { host: 'https://dev.myapp.com', port: 80 }, prod: { host: 'https://prod.myapp.com', port: 80 }, } export const config = _config[process.env.NODE_ENV || 'dev'];
Il semble que la solution la plus élégante parmi celles fournies (pour l'instant)
Pour plus de ta type de sécurité, je le recommanderais à la place. Nous pouvons utiliser Type Alias à Télépositions fournies pour Si vous le souhaitez, vous pouvez même déclarer des alias de type pour le nom de vos configs ( hôte code>.
local code> < Code> dev code>,
prod code>) p> p>