【问题标题】:Why does JHipster generate Interfaces for Angular model objects?为什么 JHipster 会为 Angular 模型对象生成接口?
【发布时间】:2018-08-15 12:03:17
【问题描述】:

为什么 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,
    ) {}
}

【问题讨论】:

    标签: jhipster


    【解决方案1】:

    我找不到最初的讨论,但据我了解,这是因为 TypeScript 中接口的工作方式与 Java 中的有点不同。它们不仅通过定义方法来描述类的外观,还描述了应该存在哪些字段。所以你可以定义来自某个地方的 JSON 应该是什么样子。就像一个 POJO。或 POTO(普通的旧 TypeScript 对象):)

    例如,您可以这样做:

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

    TS 会检查你提供的对象是否满足定义的 student 结构。当您从 API 中取出一个对象时,您只需以这种方式直接映射一个 JSON,因此两者之间没有类。另一方面,在直接构建 IStudent 的对象时,使用类而不是接口更方便。因为它也满足 IStudent,你可以只做

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

    哪个更短。

    您也可以依赖我的第一个 sn-p(这就是 ionic 的做法,顺便说一句。使用接口作为 POJO/POTO)。仅在 TS 中使用类会导致糟糕的开发人员体验恕我直言。

    希望对你有所帮助

    【讨论】:

    • 顺便说一句,“TOJO”代表什么?
    • POJO = 普通的旧 Java 对象,只是一个带有 getter 和 setter 字段的类,没有进一步的逻辑。对于 TypeScript,TOJO 将是相同的。但我看到自己的错误,应该是 POTO/POTSO 而不是 TOJO :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多