在我的TypeScript节点应用程序中,我希望引用与我的NODE_ENV变量匹配的导出对象。
config.ts
const test: { [index: string]: any } = {
param1: "x",
param2: {
name: "John"
}
}
const dev: { [index: string]: any } = {
param1: "y",
param2: {
name: "Mary"
}
}
export { test, dev }
main.ts
const environment = process.env.NODE_ENV || "development";
import * as config from "./config.ts";
const envConfig = config[environment]; //gives error Element implicitly has an 'any' type because expression of type 'any' can't be used to index type 'typeof import("/path_to_config.ts")'.ts(7053)
答案 0 :(得分:1)
只需使隐式any
明确:
const envConfig: any = (config as any)[environment];
当您尝试通过['propertyName']
而不是.propertyName
访问对象的属性时,通常会出现此错误,因为在许多情况下,这种形式会绕过TypeScript的类型检查。
答案 1 :(得分:1)
通过定义一个受所有可能值限制的类型(可以从config.tsx导出),您可以比any
做得更好。
type configType ='test' | 'dev'
const envConfig = config[environment as configType];