接口中的联合类型:类型“日期”不存在属性“ _seconds”

时间:2020-04-28 19:15:38

标签: typescript

我有两个界面:

interface Timestamp {
  _seconds: number;
  _nanoseconds: number;
}

interface Item {
  createdAt: Timestamp | Date;
}

但是编译后出现错误:

Property '_seconds' does not exist on type 'Timestamp | Date'.

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您正尝试访问_seconds上的item.createdAt,但是由于这是 Union类型,因此TS在运行时不知道其值是否为{ {1}}或Timestamp,因此警告您,如果是Date,则Date不确定。

您可以使用_seconds运算符检查属性是否存在,在这种情况下,TS会将in的类型缩小为createdAt,现在您可以无错误地访问Timestamp来自编译器:

_seconds

Playground Link