可以在Typescript中扩展类型吗?

2020/10/24 07:41 · javascript ·  · 0评论

说我有以下类型:

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

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

type UserEvent extends Event = {
   UserId: string; 
}

这行不通。我怎样才能做到这一点?

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

如果只想声明具有其他属性的类型,则可以使用交集类型

type UserEvent = Event & {UserId: string}

对于TypeScript 2.2的UPDATE,如果类型满足一些限制,现在可以使用扩展类对象类型的接口

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

interface UserEvent extends Event {
   UserId: string; 
}

相反,它不起作用-UserEvent必须声明为接口,type如果要使用extends语法,则不能声明为接口

而且仍然不能extend 与任意类型一起使用-例如,如果Event类型参数没有任何约束,则它不起作用

您可以相交类型:

type TypeA = {
    nameA: string;
};
type TypeB = {
    nameB: string;
};
export type TypeC = TypeA & TypeB;

您现在可以在代码中的某处执行以下操作:

const some: TypeC = {
    nameB: 'B',
    nameA: 'A',
};

您想要达到的目标等同于

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

interface UserEvent extends Event {
   UserId: string; 
}

定义类型的方式不允许指定继承,但是,如artem所指出的,使用交集类型可以实现类似的目的

也许下面的方法对使用reactjs的TS有所帮助

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

interface UserEvent<T> extends Event<T> {
    UserId: string;
}
本文地址:http://javascript.askforanswer.com/keyizaitypescriptzhongkuozhanleixingma.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!