长沙制作网站公司哪家好广州seo推广营销
1,在声明对象时通过Record定义类型,键值对方式,将baseLabel由原来的字面量类型的key,改成了string,刚好符合Object.entries()返回的类型,。
Object.entries(obj: { [s: string]: any }): [string, any][]
2,通过断言,使用 as keyof typeof baseLabel 告诉 TypeScript 这个 key 一定是 baseLabel 的键之一

3,也是通过断言,断言Object.entries()返回的类型。

以下是报错内容
- 问题原因:key 是 string 类型,但 TypeScript 不知道它一定是 baseLabel 的有效键
- Object.entries(obj) 返回 [string, any][],所以 key 的类型是 string。
- 但 baseLabel 的类型是固定键的对象(没有 string 索引签名)。TS 不能保证任意 string 一定是 baseLabel 的键,所以拒绝 baseLabel[key]。

解析 :baseLabel[key as keyof typeof baseLabel] 的含义

