Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript typescript中API中的typescript对象的良好实践是什么?_Javascript_Typescript - Fatal编程技术网

Javascript typescript中API中的typescript对象的良好实践是什么?

Javascript typescript中API中的typescript对象的良好实践是什么?,javascript,typescript,Javascript,Typescript,从api调用实例化对象的良好实践是什么 我使用的是Angular/NestJS框架,当从api返回一个对象时,它是一个json响应(在我的例子中),当我将其包装成对象时,类似于: this.objectService.findOne(this.objectId).subscribe( (response: Object) => { this.myObject = response; } ); 我将无法使用对象的函数,因为它没

从api调用实例化对象的良好实践是什么

我使用的是Angular/NestJS框架,当从api返回一个对象时,它是一个json响应(在我的例子中),当我将其包装成对象时,类似于:

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);