假设我有以下类型:

type Event = {
   name: string;
   dateCreated: string;
   type: string;
}

我现在想扩展这个类型,即

type UserEvent extends Event = {
   UserId: string; 
}

这不管用.我怎么才能做到这一点呢?

推荐答案

关键字extends只能用于接口和类.

如果您只想声明具有附加属性的类型,则可以使用intersection type:

type UserEvent = Event & {UserId: string}

UPDATE对于TypeScript 2.2,it's now possible to have an interface that extends object-like type,如果该类型满足某些限制:

type Event = {
   name: string;
   dateCreated: string;
   type: string;
}

interface UserEvent extends Event {
   UserId: string; 
}

反过来也不行——如果要使用extends语法,必须将UserEvent声明为接口,而不是type.

而且仍然不可能使用extend with arbitrary types-例如,如果Event是没有任何约束的类型参数,则它不起作用.

Javascript相关问答推荐

在JavaScript中,如何将请求的回调函数的结果合并到运行的代码中?

如何提取Cypress中文本

用相器进行向内碰撞检测

序列查找器功能应用默认值而不是读取响应

一次仅播放一个音频

为什么从liveWire info js代码传递数组我出现错误?

如何在使用fast-xml-parser构建ML时包括属性值?

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

从实时数据库(Firebase)上的子类别读取数据

如何在angular中从JSON值添加动态路由保护?

Rehype将hashtag呈现为URL

Chart.js 4.4.2,当悬停在一个数据点上时,如何在工具提示中拥有多个数据点/标签?

Websocket错误—有一个或多个保留位开启:reserved1 = 1,reserved2 = 0,reserved3 = 0

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

react -原生向量-图标笔划宽度

ngOnChanges仅在第二次调用时才触发

P5JS-绘制不重叠的圆

如何在Java脚本中并行运行for或任意循环的每次迭代

将延迟加载的模块转换为Eager 加载的模块

当S点击按钮时,我如何才能改变它的样式?