é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>