【发布时间】:2018-06-28 20:13:37
【问题描述】:
我有JSON字符串
const json = '{ "first_name": "John", "last_name": "Doe"}';
还有一个班级User
class User {
constructor(
public first_name: string,
public last_name: string
) {
}
public getFullName = (): string => {
return this.first_name + ' ' + this.last_name;
};
}
当我尝试这个时
const user: User = JSON.parse(json);
console.log(user.first_name); // Works, prints "John"
console.log(user.last_name); // Works, prints "Doe"
console.log(user.getFullName()); //Error: TypeError: user.getFullName is not a function
我知道发生了错误,因为 JSON.parse 只匹配 User 类型,但不匹配其中的方法。
所以为了解决这个问题,我在User 类中编写了一个fromJSON 静态方法来手动解析,
public static fromJSON = (json: string): User => {
const jsonObject = JSON.parse(json);
return new User(
jsonObject.first_name,
jsonObject.last_name
);
};
这是我的问题
- 这是一个完美的解决方案吗?
- 还有比这更好的解决方案吗?
-
TypeScript中是否有针对此问题的内置解决方案?
【问题讨论】:
-
也许真正的问题是您为什么要为 JSON 数据创建
new User()实例?在您的应用程序中将 JSON 作为数组提供还不够吗?
标签: typescript