如何修复TS2345错误:类型'A | B'参数无法赋值给类型'A'?
问题解决方法
错误根源
你代码里的核心问题是没有正确构造符合A类型的变量:
A类型要求包含a和c两个number类型的属性,但你定义a常量时只写了a属性,缺少c。- 同时
a属性的值写的是number(类型标识符),而不是具体的数值(比如1、5这类),这也不符合number类型的赋值要求。
修正后的代码
type A = {a: number, c: number} type B = {a: number, b: number} function ab(param: A | B) {} // 正确构造A类型变量:包含a和c属性,且值为具体数值 const a: A = {a: 1, c: 2} ab(a) // 此时可以正常传入 // 传入B类型常量的正确示例 const b: B = {a: 3, b: 4} ab(b) // 同样能正常运行
原理说明
TypeScript的联合类型A | B表示参数可以是A或B类型的任意一种,但前提是传入的变量必须严格符合对应类型的结构要求。只要变量完全匹配A或B的定义,就能被ab函数正常接收。
内容的提问来源于stack exchange,提问作者What is Love
相关产品推荐
相关产品推荐

