typescript - 打字稿继承扩展属性
问题描述
好吧,我有两个对象用户和参与者的简单继承。
用户定义为
export type userDoc = {
firstname: string
lastname: string
email: string
}
export class User {
props: userDoc = {
firstname: "",
lastname: "",
email: "",
{...}
}
}
参与者(从用户继承)为
type participantDoc = {
pseudonym: string
karma: number
impact: number
level: number
experience: number
}
export class Participant extends User {
props: participantDoc = {
pseudonym: "",
karma: 0,
impact: 0,
level: 0,
experience: 0
}
}
现在我希望实现的是在子类中扩展父类的属性。我正在使用道具,因为 mongodb 并且因为以这种方式分配它而不是 Object.assign() 更安全。
错误打字稿正在抛出:
TS2416: Property 'props' in type 'Participant' is not assignable to thesame property in base type 'User'.
Type 'participantDoc' is missing the following properties from type 'userDoc': firstname, lastname, email, and 6 more.
解决方案
你将不得不像在课堂上那样扩展道具的类型。
改变
export type participantDoc = {
pseudonym: string
karma: number
impact: number
level: number
experience: number
}
至
export type participantDoc = {
pseudonym: string
karma: number
impact: number
level: number
experience: number
} & userDoc
此外,如果您愿意将您的类型声明为接口,您可以这样做:
export interface userDoc {
firstname: string
lastname: string
email: string
}
export interface participantDoc extends userDoc {
pseudonym: string
karma: number
impact: number
level: number
experience: number
}
推荐阅读
- c++ - 如何在构造函数初始化列表中创建静态对象
- android - 人脸检测安卓
- mysql - 通过客户端计算机将文件内容上传到 mariadb/mysql 中的单个值
- excel - 当用户使用powerapps和excel单击发送按钮时如何向特定人群发送文本警报消息
- spring - ApplicationListener 的类比
来自 Quarkus 的 Spring - php - 在 Laravel 中找不到对象 - Laravel
- node.js - npm start 运行时卡在终端中
- java - Hibernate - 制作谓词时避免属性名称中的字符串
- mongodb - MongoDB 指南针卡在加载屏幕上
- asp.net-core - 具有自定义用户数据库的 Blazor Asp.Net Core Identity