javascript - TypeScript:为什么我不能访问仅在一个对象上定义的联合类型的属性?
问题描述
我想要一个属性a
为数字的对象或属性b
为字符串的对象。在纯 JavaScript 中,如果另一个对象已通过,变量 test 将是一个数字或未定义。为什么这是 TypeScript 中的错误?或者有没有办法在没有类型保护的情况下做到这一点?
function t(aOrB: {a:number} | {b:string}){
const test: number | undefined = aOrB.a
}
解决方案
您需要在返回之前if ('a' in aOrB)
进行检查。if ('b' in aOrB)
推荐阅读
- java - 下面的方法在泛型方面是什么意思?
- javascript - 机器人没有分配角色。我收到错误缺少权限
- python - 在 python 上需要帮助。我不知道为什么它不起作用
- javascript - 如何在没有身份验证的情况下不在 Vue 应用程序中提供管理页面内容?
- typescript - 仅在第一次调用其 get in typescript 时初始化属性
- ruby-on-rails - 通过字符串插值在 ruby on rails 应用程序中远程执行代码
- cassandra - 数据被插入到与 cassandra 不同的列中
- testing - 功能点分析中的工作量和成本估算
- r - 如何在将未知数量的变量传递给dplyr中的函数时使用pivot_wider
- c - 使转义序列在字符串中可读