Javascript typescript中API中的typescript对象的良好实践是什么?
从api调用实例化对象的良好实践是什么 我使用的是Angular/NestJS框架,当从api返回一个对象时,它是一个json响应(在我的例子中),当我将其包装成对象时,类似于:Javascript typescript中API中的typescript对象的良好实践是什么?,javascript,typescript,Javascript,Typescript,从api调用实例化对象的良好实践是什么 我使用的是Angular/NestJS框架,当从api返回一个对象时,它是一个json响应(在我的例子中),当我将其包装成对象时,类似于: this.objectService.findOne(this.objectId).subscribe( (response: Object) => { this.myObject = response; } ); 我将无法使用对象的函数,因为它没
this.objectService.findOne(this.objectId).subscribe(
(response: Object) => {
this.myObject = response;
}
);
我将无法使用对象的函数,因为它没有实例化(我假设响应中的类型对象类似于掩码)。如果这是一个众所周知的问题,我觉得有必要知道从api返回实例化对象的最佳做法是什么,因为它将在我的应用程序的许多地方发生
也许这些假设是错误的:
- 不要在api返回的对象类中声明函数,请使用其他帮助程序或其他
- 将相同的键从api响应复制到新对象(在构造函数中?),如:
- 使api服务直接从响应实例化对象
- 我想怎么做就怎么做在这种情况下没有最佳实践
从不声明函数
非常重要。在OO设计中,这类对象被称为DTO(数据传输对象),它们不应该声明奇特的方法,除了绑定函数将DTO转换为模型对象,以及在其他语言中序列化函数将这类对象转换为JSON/XML等(在js/ts中,我们通常使用JSON.parse和JSON.stringify)。请参阅:感谢您的精确性。因此,我将为业务逻辑声明一个DTO和一个类。因此,对于其他语言(例如Java),序列化/反序列化将在类中或DTO中(尽管是静态的)序列化方法有时在DTO中实现,以为这种做法正在慢慢消失,取而代之的是外部序列化库(如Java中的Jackson)。对于js,我强烈建议您不要在DTO本身中实现序列化。DTO的关键在于它是一个普通对象,因此您可以将其传递给外部库或函数,例如JSON.stringify()
并获得正确的协议格式以通过网络发送部分从不声明函数
很重要。在OO设计中,此类对象称为DTO(数据传输对象)它们不应该声明奇特的方法,除了将DTO转换为模型对象的绑定函数,以及在其他语言中序列化函数以将此类对象转换为JSON/XML等(在js/ts中,我们通常使用JSON.parse和JSON.stringify)。请参阅:谢谢您的精确性。因此,我将为业务逻辑声明一个DTO和一个类。因此,序列化/反序列化将在类中或DTO中(尽管是静态的)?对于其他语言(例如Java)序列化方法有时在DTO中实现,以为这种做法正在慢慢消失,取而代之的是外部序列化库(如Java中的Jackson)。对于js,我强烈建议您不要在DTO本身中实现序列化。DTO的全部要点是它是一个普通对象,因此您可以将它传递给外部库或函数,如JSON.stringify()
,并获得正确的协议格式以通过网络发送
this.myObject = new Object(response);