好吧,我有两个对象用户和参与者的简单继承。
用户定义为
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
}
}
现在我希望实现的是在子类中扩展父类的属性。我正在使用 props 因为 mongodb 并且因为以这种方式分配它比 Object.assign() 更安全。
错误 typescript 正在抛出:
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.
最佳答案
你必须像上课一样扩展 Prop 的类型。
改变
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
此外,如果您愿意将您的类型声明为接口(interface),您可以这样做:
export interface userDoc {
firstname: string
lastname: string
email: string
}
export interface participantDoc extends userDoc {
pseudonym: string
karma: number
impact: number
level: number
experience: number
}
关于 typescript 继承扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61083903/