ts类型implements后类型为never?
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' })
这里的 create
方法参数的类型理想状态下应该是 ParamsA | ParamsB
,这里为什么会是 ParamsA & ParamsB
回复
1个回答
test
2024-06-25
因为 ts
不知道 e
究竟是 PageA
还是 PageB
,所以传入的参数必需同时对两种情况都有效,只能取两个实现的并集
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容