You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 08:17:02