【发布时间】:2021-02-16 19:27:44
【问题描述】:
我正在尝试下面的代码,但不确定是否可以告诉 typescript 假设来自任一接口的类型
export interface CellA {
text: string;
}
export interface CellB {
date: Date;
}
var cell = {};
const { date, text } = cell as (CellA | CellB);
console.log(date, text);
TS 错误:“CellA | 类型”上不存在属性“日期” 单元格B'.(2339)
我所追求的是让打字稿假设被破坏的变量存在于任何一个接口中。 TS Playground Example
【问题讨论】:
-
你需要一个类型保护,因为
date在CellA上不存在,但你可能正在尝试访问它。text上的CellB也是如此。 -
你为什么要这样做?这闻起来像 x/y 问题...
-
@JaredSmith,所以我有一个 React 单元组件,它可以作为各种单元类型的宿主。每个时间都被单独定义并且可以有不同的道具
-
那么你可能想要一个有区别的联合。我正在使用手机,这使得链接变得困难,但官方打字稿手册中有一个可靠的例子。
-
@NidhinJoseph 终于到了电脑前,添加了一个答案。希望它对你有用!
标签: javascript typescript assertion