为什么JHipster会为Angular模型对象生成接口?

时间:2018-08-15 12:03:17

标签: jhipster

JHipster为什么要为每个Angular模型对象生成接口?

例如

export interface IStudent {
    id?: number;
    studentIdentifier?: string;
    firstName?: string;
    lastName?: string;
}

export class Student implements IStudent {
    constructor(
        public id?: number,
        public studentIdentifier?: string,
        public firstName?: string,
        public lastName?: string,
    ) {}
}

1 个答案:

答案 0 :(得分:4)

我找不到原始的讨论,但是据我了解,这是因为接口在TypeScript中的工作方式与Java中的稍有不同。它们不仅通过定义类的方法来描述类的外观,而且还应显示哪些字段。因此,您可以定义某处的JSON的外观。像POJO。或POTO(普通的TypeScript对象):)

通过示例,您可以这样做:

let student: IStudent = { id: 123, studentIdentifier: '...',...}

和TS将检查您提供的对象是否满足学生的定义结构。当您从API获取对象时,您就可以直接以这种方式映射JSON,因此两者之间没有类。另一方面,直接构建IStudent的对象时,使用类而不是接口更方便。由于它也满足IStudent的要求,因此您可以制作

let student: IStudent = new Student(123, '...', ..) 

那是较短的。

您也可以依赖我的第一个代码片段(这是离子的代码,顺便说一句。将接口用作POJO / POTO)。仅在TS中使用类会导致不好的开发人员体验恕我直言。

希望能有所帮助