Typescript 扩展对象并将其指定给其父对象

Typescript 扩展对象并将其指定给其父对象,typescript,Typescript,我不确定标题听起来是否正确。如果需要修改,请提出建议 我有一个名为program export class Programme { id: string; imageUrl: string; title: string; price: number; subject: string; level: string; tutorId: string; click: number; constructor(level?: str

我不确定标题听起来是否正确。如果需要修改,请提出建议

我有一个名为
program

export class Programme {
    id: string;
    imageUrl: string;
    title: string;
    price: number;
    subject: string;
    level: string;
    tutorId: string;
    click: number;

    constructor(level?: string) {
        this.click = 0;
        this.level = level ? level : "";
    }
}
我还有另一个对象
ProgrammeWrapper

export class ProgrammeWrapper extends Programme{
    lesson: Lesson[];
    tutor: User;

    constructor(prog: Programme){
        super();
    }
}
这就是问题所在:

var programme = new Programme();//this is coming from database
var user = new User();
var lessons = new Lesson[];
var programmeWrap = new ProgrammeWrapper();
programmeWrap.tutor = user;
programmeWrap.lessons = lessons;

我如何分配课程?到programmeWrapper?

编写代码的方式programmeWrapper是一个程序,不需要创建不同的程序实例

ProgrammeWrapper也是一个程序,ProgrammeWrapper上也提供了程序的所有属性

ProgrammeWrapper可以这样编写:

导出类程序包装扩展程序{
课程:第[]课;
导师:用户;
构造函数(级别?:字符串){
超级(级别);
}
}
并且可以这样使用:

var user=new user();
var课程=新课程[];
var programmeWrap=new ProgrammeWrapper();
programmeWrap.tutor=用户;
programmeWrap.lessons=课程;
programmeWrap.id='5';//计划财产可用
如果您只想拥有一个具有该接口的对象并对其进行访问,则可以执行以下操作:

接口程序{
id:字符串;
imageUrl:字符串;
标题:字符串;
价格:数量;
主题:字符串;
级别:字符串;
教程:字符串;
点击:数字;
}
类程序包装器{
课程:字符串[];
导师:弦;
建造商(公共工程:计划){
}
}
let program:program=null;//来自其他地方
让programmeWrapper=新的programmeWrapper(Program);
log(programmeWrapper.prog.id);

我认为您并不真正理解继承是什么。也许读一下吧。谢谢@toskv,但是我有来自数据库的程序,我怎么能把它放在程序包装器中呢?这取决于程序有什么行为吗?方法?或者它只是一个普通对象?如果它是一个普通对象,最简单的解决方案就是让Program作为接口,ProgrammeWrapper作为类属性。不,你不能,因为typescript中没有强制转换,只有类型断言。我将在一分钟后添加一个示例。我可以再问一件事吗,即使我已初始化,我也会收到一个类型错误。