javascript - 在 typescript Angular 2中创建对象实例

标签 javascript angular typescript

如何在 TypeScript 中创建新实例。显然我没有匹配构造函数,但我看不出有什么问题。

export class User implements IUser {
    public id: number;
    public username: string;
    public firstname: string;
    public lastname: string;
    public birthday: string;
    public email: string;

    public constructor(iUser: IUser)
    {
        this.id = iUser.id;
        this.username = iUser.username;
        this.firstname = iUser.firstname;
        this.lastname = iUser.lastname;
        this.birthday = iUser.birthday;
        this.email = iUser.email;
    }
}

    interface IUser {
        id?: number;
        username: string;
        firstname: string;
        lastname: string;
        birthday: string;
        email: string;
    }

和扩展用户的学生类

export class Student extends User implements IStudent, IUser {
    public indeks: string;
    public studyProgram: StudyProgram;


    public constructor(iUser: IUser, iStudent: IStudent)
    {
        super(iUser);
        this.indeks = iStudent.indeks;
        this.studyProgram = iStudent.studyProgram;
    }
}

    interface IStudent {
        indeks: string;
        studyProgram: StudyProgram;
    }

所以,当我尝试创建新的学生实例时,出现了这个错误

 Supplied parameters do not match any signature of call target.

     this.student = new Student ({
      username: '',
      firstname: '',
      lastname: '',
      birthday: '',
      email: '',
      indeks: '',
      studyProgram: new StudyProgram({
        name: '',
        duration: 0,
        courseType: ''
    })
  });

这里是StudyProgram

export class StudyProgram implements StudyProgramInterface {
        public id: number;
        public name: string;
        public duration: number;
        public courseType: string;
        public studentList: Array<Student>;

    public constructor(studyProgramCfg: StudyProgramInterface) {
        this.id = studyProgramCfg.id;
        this.name = studyProgramCfg.name;
        this.duration = studyProgramCfg.duration;
        this.courseType = studyProgramCfg.courseType;
    }
}

    interface StudyProgramInterface {
        id?: number;
        name: string;
        duration: number;
        courseType: string;
    }

最佳答案

Student 类构造函数需要两个对象(一个实现 IStudent,另一个实现 IUser),您只传递了一个。我认为您正在寻找的构造函数是:

public constructor(student: IUser & IStudent) {
    super(student);
    this.indeks = student.indeks;
    this.studyProgram = student.studyProgram;
}

您可以在此处找到有关交叉路口类型的更多信息:https://basarat.gitbooks.io/typescript/content/docs/types/type-system.html

关于javascript - 在 typescript Angular 2中创建对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52725660/

相关文章:

angular - 在 Angular 5 中使用 materialize-css (v 1.0.0) 不起作用

angular - 模板解析错误 : 'md-grid-tile' is not a known element

angular - 基于数组 Angular 2 中 id 数量的动态 URL 参数

javascript - Reactjs Axios 不会捕获

javascript - 是否可以使用 chrome 扩展与非事件选项卡中的内容元素进行交互?

javascript - Angular 2/4/5(不是 AngularJS):- how can I take . offset().top 元素?

javascript - 如何在 react 组件中显示字符串数组

javascript - 缩放后如何应用 d3.js svg 裁剪

angular - 如何在 Angular 4 中实现 OpenID

angular - typescript 构造函数 : accept string for enum