我有以下数据结构:
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编写的相同结构,用户人员可以是FPerson
或JPerson
。我希望能够根据人物类型进行投射..我怎么能在打字稿中做到这一点?
类似的东西:
doSomething(u: User) {
let fp: FPerson;
let jp: JPerson;
if (u.person.isFPerson()) {
fp = <FPerson> u.person;
} else {
jp = <FPerson> u.person;
}
...
}
如何实施isFPerson()
方法?我如何强制打字存储将FPerson
和JPerson
中的额外字段存储到Person
变量中?
答案 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;
}
...
}
虽然FPerson
和JPerson
都需要延长Person
,但问题中的代码并非如此。