ArkTS 模块及命名空间介绍

发布时间:2026/11/5 8:31:15

ArkTS 模块及命名空间介绍 模块的导入和导出在实际开发中代码不会都写在一个文件里。如果所有代码都堆在一起后续想修改某个功能、找某个逻辑简直就是大海捞针因此在实际开发中通常会将代码拆分成多个文件这样管理和维护起来更加方便。模块是代码拆分、复用与隔离的核心机制一将复杂项目按功能业务拆分成多个独立文件每个文件就是一个模块通过 export 暴露模块内的接口、类、函数再通过 import 在其他模块中导入使用。在 ArkTS 中一个文件就是一个模块不同文件之间的代码是隔离的。通俗地讲在 A 文件中写的函数、类、变量在 B 文件里是无法直接使用的。编译器会报错提示“找不到内容”。这里在 Device 文件中定义了 Device 类在 Light 文件定义了 Light 类并且想要继承 Device 类。但编译器中却提示找不到 Device 类的错误因为两个文件的作用域是分开的互相不认识。// Device 文件 class Device { name: string ; constructor(name: string) { this.name name; } } // Light 文件 // 找不到名称Device class Light extends Device { name: string 灯; protected status: string off; turnOn(): void { this.status on; } }这里可以通过 export 和 import 关键字实现在 Light 文件中使用 Device 文件的代码。// Device 文件 export class Device { name: string ; constructor(name: string) { this.name name; } } // Light 文件 import { Device } from ./Device; class Light extends Device { name: string 灯; protected status: string off; turnOn(): void { this.status on; } }命名导入与导出直接在成员声明前加 export可导出多个成员导入时需用同名接收。// /module/Light文件 // 导出类灯光类 export class Light extends Device { name: string 客厅灯; } // 导出常量默认亮度 export const DEFAULT_BRIGHTNESS 50; // 导出函数创建默认配置的灯 export function createDefaultLight(name: string): Light { return new Light(name); } // 导出接口设备配置结构 export interface LightConfig { name: string; }导入命名导出的成员用 import{成员名 1, 成员名 2, …} from “模块路径”,成员名必须和导出时一致可以通过 as 重命名。// Test 文件 import { Light, createDefaultLight, DEFAULT_BRIGHTNESS, LightConfig as Config } from ../module/Light; let lightConfig: Config { name: , maxBrightness: DEFAULT_BRIGHTNESS } createDefaultLight(light);默认导出与导入一个模块只能有一个默认导出使用 export default 声明。导入时可以自定义名称无需与导出名称一致。默认导出适合模块的核心功能例如模块只暴露一个类。// /module/Light 文件 export default class Light extends Device { name: string 客厅灯; protected _status: string off; turnOn(): void { this._status on; } }导入默认导出的成员用 import 自定义名称 from “模块路径”名称可自定义无需和导出时一致。// Test 文件 import LightClass from ../module/Light’; let light new LightClass(客厅灯);动态导入动态导入是 ArkTS 中用于按需加载模块的核心机制会返回 Promise 对象并以异步方式实现模块的条件加载和运行时解耦适用于性能优化和复杂业务场景。例如有时导入的模块太大直接使用静态导入会让代码加载速度变慢。如果要导入的模块一开始不存在需要等待一段时间例如需要从网路上获取。这时就可以动态导入。动态导入的好处是按需加载或者根据条件加载可以提升加载速度让应用更加流畅。import(../module/Light) .then((lightImport) { lightImport.createDefaultLight(light); console.log(${lightImport.DEFAULT_BRIGHTNESS}); }) .catch((error: BusinessError) { console.error(error ${error.code} ${error.message}); });命名空间的概念和使用命名空间是通过 namespace 关键字定义的代码逻辑边界用于将相关类、接口、函数等组织在一起避免命名冲突并提高代码可维护性。namespace命名空间名称{export接口、变量、函数、类}namespace DeviceControl { // 导出类 export class Device { name: string ; } // 导出接口设备配置结构 export interface LightConfig { name: string; maxBrightness: number; } // 导出函数创建默认配置的灯 export function createDevice(): Device { return new Device(); } // 导出常量默认亮度 export const DEFAULT_BRIGHTNESS 50; }可以通过命名空间.成员名访问导出内容。// /module/DeviceNamespace文件 export namespace DeviceControl { // 导出类 export class Device { name: string ; } // 导出接口设备配置结构 export interface LightConfig { name: string; } // 导出函数创建默认配置的灯 export function createDevice(): Device { return new Device(); } // 导出常量默认亮度 export const DEFAULT_BRIGHTNESS 50; }// Test文件 import { DeviceControl } from ../module/DeviceNamespace; let device new DeviceControl.Device(light); let lightConfig: DeviceControl.LightConfig { name: , maxBrightness: DeviceControl.DEFAULT_BRIGHTNESS } let airConditioner DeviceControl.createDevice(airConditioner);
延伸阅读

更多相关文章

2026/11/4 20:11:10

C++ INI文件读写器实现:从设计到源码的完整指南

1. 项目概述:为什么INI文件在C项目中依然重要?在接手一个C项目,尤其是涉及到配置管理时,我们常常会面临一个选择:配置文件用什么格式?XML、JSON、YAML,还是INI?尽管INI格式看起来有些…

2026/11/4 22:29:52

大模型开发实战:超越API调用的技术纵深与优化策略

1. 大模型开发的真实面貌:超越API调用的技术纵深上周帮一个创业团队评审他们的AI产品时,发现工程师把所有业务逻辑都塞进了prompt模板里。当我问及推理优化策略时,对方很自然地回答:"用GPT-4不就行了?"这种认…

2026/11/4 18:54:17

AI招聘系统如何提升17倍筛选效率与人机协作

1. 项目背景与核心价值去年我们团队上线eRoad AI招聘系统时,HR部门每天要处理300简历,平均每份简历筛选时间超过8分钟。现在系统能将初筛效率提升17倍,业务部门满意度从62%飙升至89%。这套系统最颠覆性的改变不是技术参数,而是彻底…

2026/11/5 10:33:54

LSM-Tree与StarRocks存储引擎深度解析

1. LSM-Tree存储引擎基础解析 LSM-Tree(Log-Structured Merge-Tree)是现代数据库系统中广泛采用的一种存储结构,其核心设计思想是通过顺序写入和后台合并来优化写性能。与传统的B树结构相比,LSM-Tree在写入密集型场景下能提供更高…

2026/11/5 10:33:54

OpenClaw:AI认知协作如何重构29个行业工作流

1. OpenClaw的本质认知革命 OpenClaw的出现彻底改变了人们对AI工具的刻板印象。这个平台最颠覆性的特点在于:它根本不是传统意义上的"软件工具",而是一个具备认知能力的数字工作伙伴。就像当年智能手机重新定义了"电话"的概念一样&a…

2026/11/5 10:33:54

eNSP下载安装全攻略:版本匹配、安装顺序与故障排查

1. 为什么一个“下载地址”背后藏着这么多门道每次在技术群里看到有人甩出一句“求一个eNSP下载地址”,底下回复往往五花八门:有人丢个网盘链接,有人让去某论坛翻帖,还有人直接说“官网找不到了,我发你”。表面上看&am…

2026/11/5 10:33:54

四款主流开发工具横向评测:Cursor、Trae、TRAE CN与QODER

1. 项目概述:四款开发工具横向评测在当今快节奏的开发环境中,选择合适的代码编辑器或集成开发环境(IDE)对开发者工作效率有着决定性影响。Cursor、Trae、TRAE CN和QODER这四款工具近期在开发者社区引发了广泛讨论。作为一位长期跟…

2026/11/5 10:33:54

SpringBoot与Mahout推荐引擎实战:协同过滤从原理到部署

简介:这份资源面向想入门推荐系统、又希望兼顾工程落地的 Java 开发者与在校学生,用 SpringBoot 搭建服务层、Apache Mahout 提供协同过滤算法,基于用户对电影的评分数据完成相似用户或相似物品的挖掘与推荐,属于可运行的中小型实…

2026/11/5 10:28:52

C/C++的OpenCV实现模板匹配的基础实现与优化

前言 模板匹配(template matching)是图像处理里最直观的定位手段:拿一张小图(模板)在一张大图(待搜索图)上逐位置滑动,计算每个位置的相似度,相似度最高的位置就是匹配结…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/5 0:02:07

多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中…

2026/11/5 0:02:07

大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#…

2026/11/5 0:02:07

鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的…

2026/11/4 12:38:23

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/4 21:04:25

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑