2016-05-05 4 views
0

は、私は次のようなデータ構造を有する:私は、Javaで書かれた同じ構造を持っているサーバー側で継承タイプメンバーエンティティ活字体

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; 
} 

を、ユーザ人のメンバーがFPersonまたはJPersonのいずれかになります。私は人のタイプに合わせてキャストすることができたいと思っています。私はTypescriptでどうすればいいですか?そのような

何か:

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

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

どのように私はisFPerson()メソッドを実装することができますか?そして、どのようにして、FPersonJPersonにある余分なフィールドをtypescriptにPerson変数に格納させることができますか?

答えて

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を拡張する必要がありますが。