为什么不能将类型“U[Extract<keyof U, string>]”分配给类型“(T & U)[Extract<keyof U, string>]”
来源:7-2 -2 扩展接口 -接口类型定义+ 创建 Axios 类

FDirector
2021-03-27
老师,您好,这里有一个有关交叉类型无法理解的地方:
我的问题如下:
- 既然我们在 for…in 中断言 to 是 T & U 交叉类型,那么按理说 TypeScript 应该可以理解 to 应具有 T 和 U 的全部 key。from 是 U 类型的,所以 from 的 key 也理应存在 to 上,可为什么 TS 还是不允许将 from的 key 映射到 to 上?
- 为什么我们将 from[key] 断言为 any 就允许映射了?
写回答
1回答
-
1. from[key] 只包含 U 类型,但不包含 T 类型,而 to 既包含 T 又包含 U,所以无法直接分配
2. as any 后就是任意类型了,相当于绕过了检测。032021-04-02
相似问题