typescript - 在打字稿中使用联合类型时出现不确定的错误消息
问题描述
我正在尝试描述 Firestore 值的联合类型:
interface StringValue {
stringValue: string;
}
interface BooleanValue {
booleanValue: boolean;
}
type ValueType = StringValue | BooleanValue;
var value: ValueType = { booleanValue: false, stringValue: "null" }; // [1]
if (value.booleanValue) console.log(value); // [2]
我在 [2] 处遇到错误:
Property 'booleanValue' does not exist on type 'ValueType'.
Property 'booleanValue' does not exist on type 'StringValue'.(2339)
虽然我希望在 [1] 行出错,但错误的分配发生在哪里。那么,为什么是 [2] 而不是 [1]?
解决方案
in
当您尝试检查对象中是否存在属性时,这是一种更好的做法:
if ('booleanValue' in value)
console.log(value);
此检查不会产生错误。
另一方面,它没有为分配生成错误,因为 Typescript 检查对象中是否存在最小属性,但是如果您添加了更多项目,TS 就可以了。检查这部分 TS 文档以获取更多信息。
推荐阅读
- django - 在 django 中从我的模型中获取所有列
- c# - 检查是否已执行事件订阅
- .net - Samesite cookie 和 Owin
- java - 如何从 Java 应用程序中为操作系统上的所有其他进程锁定文件?
- swift - 如何使用分段控制在两个重叠容器视图之间添加滑动手势或滑动功能,如 instagram 配置文件?
- algorithm - 沿法线方向偏移的 3d 多段线
- c# - C# 套接字客户端服务器消息交换
- c# - 如果像 [] 一样传递,则访问查询参数值
- unix - Unix RedHat - 不能排除“查找”命令上的“权限被拒绝”消息
- java - 接口中的静态方法