在TypeScript中描述对象的正确方法是什么(可能不仅在TypeScript中)。例如,我有一些get http请求,该请求返回给我一个具有2个参数(名称和ID)的对象。 我看到三种描述方式。 首先是创建一个界面
export interface MyObject {
name: string;
id: number;
}
第二种方法是创建一个类
export class MyObject {
public name: string;
public id: number;
}
或同一个类,但带有getter和setters
export class MyObject {
private _name: string;
private _id: number;
public get name(): string {
return this._name;
}
public set name(value: string) {
this._name = value;
}
// similarly for id
}
那么,最清晰,最正确的方法是什么?我主要使用接口来描述对象。但是我见过很多项目,这些项目按类描述对象,这三种方法的优缺点是什么。有没有最合适的一个?
答案 0 :(得分:0)
例如,我有一些get http请求,该请求返回给我一个具有2个参数(名称和ID)的对象。我看到三种描述方式。
HTTP请求获取一个JSON字符串,然后对其进行解析。
动态方式是简单地使用JSON解析器生成的对象。 interface
是描述它的正确工具:
export interface MyObject {
name: string;
id: number;
}
// …
const result = JSON.parse(await fetch(…)) as MyObject;
在这里,JSON解析器提供了与以前相同的对象,但是我们更喜欢通过实例化一个类来创建另一个对象:
export class MyObject {
constructor(public name: string, public id: number) {
}
}
// …
const { name, id } = JSON.parse(await fetch(…));
const result = new MyObject(name, id);
同一件事,还有一个使用setter和getter的间接引用:
export class MyObject {
private _name: string;
private _id: number;
public get name(): string {
return this._name;
}
public set name(value: string) {
this._name = value;
}
public get id(): number {
return this._id;
}
public set id(value: number) {
this._id = value;
}
}
// …
const { name, id } = JSON.parse(await fetch(…));
const result = new MyObject();
result.name = name;
result.id = id;