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

如何调用接收联合类型参数的TypeScript函数?

问题原因

你调用报错的核心原因是混淆了TypeScript的编译期类型和运行时值:

  • 你定义的Fish、Bird都属于类型别名,仅在编译阶段做静态类型校验使用,编译成JS后会被完全抹除,不能直接作为实际参数传入函数
  • swim是Fish类型对象挂载的方法,本身也不符合Fish | Bird的类型要求,因此move(swim)也会触发类型报错
正确调用方式

你需要先构造出符合Fish或Bird类型结构的实际对象,再传入move函数即可,以下是可运行的示例:

// 构造符合Fish类型的对象
const goldfish: Fish = {
  swim: () => console.log("鱼类游动")
}

// 构造符合Bird类型的对象
const sparrow: Bird = {
  fly: () => console.log("鸟类飞翔")
}

// 调用函数
move(goldfish)
move(sparrow)

你也可以直接传入符合结构要求的对象字面量,TypeScript会自动完成类型推断:

move({
  swim: () => console.log("直接游动")
})

move({
  fly: () => console.log("直接飞翔")
})

内容的提问来源于stack exchange,提问作者Vojta Simek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:21:01