老师您好,config/index.ts ...EnvConfig[env]报错
来源:1-1 课前须知,这里有你需要了解得一切

慕尼黑8466541
2021-07-07
interface Mode {
baseApi: String,
mockApi: String
}
interface Person {
dev: Mode,
prod: Mode
}
const env: string = import.meta.env.MODE || 'prod'
const EnvConfig: Person = {
dev: {
baseApi: '/',
mockApi: '/'
},
prod: {
baseApi: '/',
mockApi: '/'
}
}
export default {
env,
mock: false,
namespace: 'cloth',
...EnvConfig[env]
}
报错内容如下:
元素隐式具有 "any" 类型,因为类型为 "string" 的表达式不能用于索引类型 "Person"。
在类型 "Person" 上找不到具有类型为 "string" 的参数的索引签名。ts(7053)
麻烦老师帮我看一下是哪里问题
写回答
2回答
-
河畔一角
2021-07-12
因为import.meta.env.MODE返回的不一定是dev/prod,还可能返回其他类型,如果返回一个其他类型,通过EnvConfig是匹配不到的。
所以,需要扩展一下Person对象
interface Person { dev: Mode, prod: Mode, [key:string]: Mode | undefined }
让它接受任意类型的字符串
00 -
Lemon甜橙君
2021-07-08
你定义的这个interface Mode,baseApi和mockApi的类型,应该都是小写的string
012021-07-08
相似问题