ArkTS 模块及命名空间介绍

发布时间:2026/9/12 6:43:00

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/9/3 14:41:35

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

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

2026/9/11 1:20:37

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

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

2026/9/9 16:03:10

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

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

2026/9/12 22:26:09

Pygame 2048完整工程:含BDF字体、虚拟环境脚本与状态机实现

简介:本资源是一套基于Python与Pygame实现的2048小游戏完整可运行项目,面向Python初学者及游戏开发入门者,旨在通过经典数字拼图游戏实践掌握图形界面编程、事件驱动逻辑与二维数组算法设计。压缩包共865个文件,含466个核心.py源码…

2026/9/12 22:26:09

YOLOv9 PCB缺陷检测实战:1297张图数据集训练与优化全解析

简介:该数据集面向PCB电路板质检与计算机视觉缺陷检测场景,采用YOLOv9格式标注,包含1297张真实PCB板图片,整体识别准确率可达99.8%。压缩包内共2000个文件,其中702张JPG原图、1297个TXT标注文件以及1个YAML配置文件&am…

2026/9/12 22:26:09

2722张图像训练YOLO杂草检测模型全流程

简介:这份杂草与作物目标检测数据集专门面向yolo系列算法开发者与农业智能化研究人员,包含2722张已标注图像,覆盖杂草和作物两类目标,可直接用于模型训练、验证与测试。数据集已预先划分好训练集、验证集,并附带data.y…

2026/9/12 22:26:09

YOLO训练从数据开始:杂草与作物数据集的全流程实操

简介:面向yolo系列算法目标检测任务的杂草与作物数据集,涵盖杂草和作物两大类目标,适用于农业场景下的模型训练、算法验证与精准作业,可配合yolov5、yolov7、yolov8、yolov9、yolov10、yolo11等主流框架使用,为精确除草…

2026/9/12 22:26:09

Python实战:从零搭建人脸识别门禁系统

简介:以人脸识别为核心的门禁管理系统,整合了宿舍管理、水电费充值、报修、系统日志等模块,面向高校宿舍场景,适合毕业设计或学习Django与Dlib人脸识别的开发者。压缩包共2001个文件,以1668个Python源码文件为主&#…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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