ts类型implements后类型为never?-灵析社区

JayCoder

type ParamsA = { test: string } type ParamsB = { test: number } interface Base { create(params: unknown): void } class PageA implements Base { create(p: ParamsA) { } } class PageB implements Base { create(p: ParamsB) { } } let a = 1 const e = a > 1 ? new PageA() : new PageB() e.create({ test: '1' }) ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/59d052d1c24be11c296c34dbc9b0be95.png) 这里的 `create` 方法参数的类型理想状态下应该是 `ParamsA | ParamsB`,这里为什么会是 `ParamsA & ParamsB` [在线查看代码](https://link.segmentfault.com/?enc=tRAlKYgyWRH47uXPr61H%2Fw%3D%3D.Af6CljVP3iLsbMKBy3CWM5P9KlKkf8TbAVOv6Hqv182Y5E9nXmUjqghPqnxzWHewSgrARS19Tt67gs4zLHvp6Dx5OjfVRnfFxoYdfDkJeY9SC%2FGZIbGEsRxgLZApXsHrUxyhsNaUvBqcaIaHChNK3wEo4XDncpp25RXI2Lb2pW2WTndZOGle7VSCTdmMV0Z3nac06hn4pfIby%2B7LrEO5F7lC32OIC15wOM8CAX%2Fu8RLrP65E4omaTb9acFeIkRybt1of67PLSmbz11iBCFMrIJ7vMyiXfsVCCASjbWnnvWRObp71ruw0kzx2jRNECMcpSjaBVyYsSVBlnNmPi3qHuGhaqbFqUsT0MMPLJNozwBYlI1GyCU1xPFNmt8NShZbvjoltNX1ZVnjf9e%2BzPcPEbb7mp40%2F61YSgM%2B3XC6EA7yztEG9Fcu4PeYGKGnzxWIUe4MKGimPg88CGHkpBiodVV33GxyzNL3SFLgrebEOb2wDUTr0EvNVvBTHcacskNz5)

阅读量:20

点赞量:0

问AI
无敌英俊大师兄
因为 "ts" 不知道 "e" 究竟是 "PageA" 还是 "PageB",所以传入的参数必需同时对两种情况都有效,只能取两个实现的并集