0
私はTSを使ってノードエクスプレスAPIを構築しています。私はmodel
とviewmodel
のクラスを区別します。 Post
モデルクラスは、複数のビューモデル表現を持つことができます。Typescript:別の同様のタイプにキャスト
しかし、私はモデルからビューモデルクラスにどのようにキャストしますか?新しいビューモデルオブジェクトを作成するメソッドを作成できます。しかし、別のタイプにキャストすることは可能ですか?
例
Post.ts
export interface IPost {
id: number;
author: string;
heading: string;
body: string;
}
/**
* Class to model a blog post
*/
export class Post implements IPost {
public id: number;
public author: string;
public heading: string;
public body: string;
constructor(id: number, author: string, heading: string, body: string) {
this.id = id;
this.author = author;
this.heading = heading;
this.body = body;
}
}
PostVM.ts
export interface IPostVM {
id: number;
author: string;
text?: string;
}
/**
* Class to model a blog post
*/
export class PostVM implements IPostVM {
public id: number;
public author: string;
public text?: string;
constructor(id: number, author: string, body: string) {
this.id = id;
this.author = author;
this.text = body;
}
}
App.ts
// This is NOT working:
const post: IPost = this.dao.getPostById(id);
const postVM: IPostVM = post as PostVM;
結果:
{
"author": "Ole",
"body": "Dette er en test på body tekst.",
"heading": "Overskrift 1",
"id": 1
}
は次のようになります。
{
"id": 1
"author": "Ole",
"text": "Overskrift 1",
}
2種類がある
ベストをあなたが行うことができますが、あなたが言ったように、クラスの関数を記述し、そうです互換性がありません。あなたは 'Post'から' PostVM'へのキャストで何をすると思いますか? –
タイプアサーションは、実行時の動作に決して影響しません。また、「見出し」が「テキスト」になるべきことをコンピュータがどのように知っていると思いますか? –
PostVMを作成するファクトリメソッドを作成する方法はありますか? – olefrank