开发云对象
=====

云对象创建完成后，您便可以直接在云对象中编写需要实现的方法。例如，通过云对象实现add与subtract两个方法。

1.  打开云对象入口文件（此处以“myCloudObject.ts”为例），添加add与subtract方法。
    
    export class MyCloudObject {
        add(num1: number, num2: number) {
            return { result: num1 + num2 };
        }
        subtract(num1: number, num2: number) {
            return { result: num1 - num2 };
        }
    }
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/44/v3/ZavRjFQMSrmT9tdSC1sbeA/zh-cn_image_0000002179338600.png?HW-CC-KV=V1&HW-CC-Date=20260612T073825Z&HW-CC-Expire=86400&HW-CC-Sign=D56A1877F8D240AB2D8717095E7717963BF573E67C7E08D1F03C2E477439D945)
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/34/v3/YBI3QXCKT6yXDgV3CgMnuA/caution_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073825Z&HW-CC-Expire=86400&HW-CC-Sign=C38A196EB1B9B1CC92A0B0053E68F88B27D912C2FB063C29B429027941154225)
    
    *   云对象是无状态性的。云对象部署至云侧后，每一次调用都可能是不同的后台节点，因此在云对象上定义类成员变量是无意义的。从一个Method中对一个类成员属性赋值，然后期望从另一个Method去获取类成员属性，这样的做法是错误的。
    *   云对象无需编写构造函数。云侧在收到对云对象的某一个函数的请求时，会调用云对象的默认的无参构造函数。
    *   云对象方法的输入是从JSON反序列化而来，只能是string、number或者Object，不支持Date、Uint8Array等类型。如果在编写云对象代码的过程中需要传递Date或Uint8Array，建议通过定义成number或者数组，在Method内通过显式地调用Date或Uint8Array的构造函数来达到目的。
    *   云对象的方法的输出当前不支持单个number返回。
    *   云对象的方法的输入、输出可以使用自定义对象，不能使用第三方依赖定义的对象或类型。注意，并不是云对象不能有第三方依赖，而是云对象的输入和输出不能有第三方依赖，否则在"Generator Invoke Interface"阶段，将会因为找不到依赖而失败，根本原因是，端侧代码运行在HarmonyOS支持方舟运行时，而云侧运行在Node.js中，二者的依赖管理不同。
    

2.  （可选）如云对象存在依赖关系，可在“package.json”文件的“dependencies”下添加需要的依赖，然后点击右上角“Sync Now”。
    
    下文以添加“@hw-agconnect/cloud-server”依赖为例进行说明，请添加实际业务所需的依赖。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/67/v3/I7XhpEkOSZqbSDeNlA7zag/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T073825Z&HW-CC-Expire=86400&HW-CC-Sign=FDF0E830B4C22A7E7351E318316903573DD6A4FF95AA6D36432F24B119FF952B)
    
    右击“package.json”文件，选择“Run 'npm install'”菜单，也可以实现依赖包安装。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/62/v3/x1FRgziKTViCxqoqEgAfgQ/zh-cn_image_0000002425894173.png?HW-CC-KV=V1&HW-CC-Date=20260612T073825Z&HW-CC-Expire=86400&HW-CC-Sign=5AFED4F0CBC00BED48FAEAC17A835EE192C46F14877D7EFF5D2727F5C0F6F1A4)
    
    所有安装的依赖包都会存储在当前云对象的“node\_modules”目录下。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4b/v3/yFguB7n1SFCF-thgqHrd4g/zh-cn_image_0000002425974957.png?HW-CC-KV=V1&HW-CC-Date=20260612T073825Z&HW-CC-Expire=86400&HW-CC-Sign=5A9C9EADCC95D97003D79E9E02389EF6D0B5D1F1B7D3C23FFA50DE74AAC7C26B)