继承类型成员实体Typescript

时间:2016-05-05 21:13:42

标签: generics inheritance typescript angular

我有以下数据结构:

export abstract class Person {
    ...
}

export class FPerson extends Person {
    a: A;
    b: B;
}

export class JPerson extends Person {
    c: C;
}

export class User {
    person: Person;
}

在服务器端,我使用与java编写的相同结构,用户人员可以是FPersonJPerson。我希望能够根据人物类型进行投射..我怎么能在打字稿中做到这一点?

类似的东西:

doSomething(u: User) {
    let fp: FPerson;
    let jp: JPerson;

    if (u.person.isFPerson()) {
       fp = <FPerson> u.person;
    } else {
       jp =  <FPerson> u.person;
    }
  ...
}

如何实施isFPerson()方法?我如何强制打字存储将FPersonJPerson中的额外字段存储到Person变量中?

1 个答案:

答案 0 :(得分:0)

有点像java:

doSomething(u: User) {
    let fp: FPerson;
    let jp: JPerson;

    if (u.person instanceof FPerson) {
       fp = <FPerson> u.person;
    } else {
       jp = <JPerson> u.person;
    }
  ...
}

虽然FPersonJPerson都需要延长Person,但问题中的代码并非如此。