我有一个接口 IPost 和一个类发布,我想从json数据创建Post,在Post构造函数中我得到json响应,其中接口IPost匹配它
我的意思是IPost界面是由这个伟大的工具json2ts
生成的json2ts:从JSON生成TypeScript接口
import { IPost, Title, Guid, Content, Excerpt, Embedded, Links } from './Ipost.ts';
export class Post implements IPost {
Id: number;
Date: string;
DateGmt: string;
Guid: Guid;
Modified: string;
ModifiedGmt: string;
Slug: string;
Type: string;
Link: string;
Title: Title;
Content: Content;
Excerpt: Excerpt;
Author: number;
FeaturedImage: number;
CommentStatus: string;
PingStatus: string;
Sticky: boolean;
Format: string;
Links: Links;
Embedded: Embedded;
constructor(json: any) {
var self = this;
json.subscribe(res => {
var jsonRes: any = res.json();
self = jsonRes; //something like this
});
}
}
我可以直接将类Post
分配给json,因为json的描述与Post类相同!
除了从json为其对等体分配每个属性之外还有其他方法吗?
答案 0 :(得分:0)
正如您将JavaScript一样,您将不得不迭代每个值,并使用标准循环将该值分配给self。在您的情况下分配给自己,只需将self
的值更改为json
值,它本身不会做任何更改this
。
json.subscribe(res => {
let json = res.json();
for (var prop in obj) {
if( obj.hasOwnProperty( prop ) ) {
this[prop] = obj[prop];
}
}
});
注意:=>
将this
绑定到外部上下文(例如您正在使用的类)到this
,这样您就不需要中间{{1}变量。