我正在导入config.json文件,并试图从中键入输出。我的应用程序会将[hidden first_name]
[hidden last_name]
与函数中的正确环境结合起来并返回。如果传入了无效或不确定的环境,则只会返回default
的配置。
这是一个示例config.json文件:
default
这是为我们的实例获取特定配置的函数。
{
"default" : {
"endpoint1": "https://example.com",
"endpoint2": "https://example.com"
},
"dev" : {
"endpoint3": "https://example.com",
"api_key":"key"
},
"uat" : {
"endpoint3": "https://example.com",
"api_key":"key"
},
"prod" : {
"endpoint3": "https://example.com",
"api_key":"key"
}
}
更新1
我认为这里的窍门是在其他选项import config from "src/js/config/config.json";
export type Environment = keyof typeof config;
export type EnvironmentConfig = typeof config.default & (typeof config.dev | typeof config.uat | typeof config.prod);
let localConfig: undefined | EnvironmentConfig;
function getForEnv(configJSON: typeof config, env: Environment | null): EnvironmentConfig {
// error thrown here because default does not have types from the specific environments.
// This type should always have default but may also have a specific environment.
localConfig = configJSON.default;
if (env !== null && configJSON[env]) {
localConfig = _.merge(localConfig, configJSON[env]);
}
return localConfig;
}
中添加一个空对象类型。这将使其不指定任何其他属性。
{}
但是,尝试访问export type EnvironmentConfig = typeof config.default & ({} | typeof config.dev | typeof config.uat | typeof config.prod);