假设我有以下类型:
type Event = {
name: string;
dateCreated: string;
type: string;
}
我现在想扩展这个类型,即
type UserEvent extends Event = {
UserId: string;
}
这不管用.我怎么才能做到这一点呢?
假设我有以下类型:
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
是没有任何约束的类型参数,则它不起作用.