模块和命名空间
模块(Modules) 和 命名空间(Namespaces) 都是用于代码组织的机制,但它们的用途和适用场景有所不同。
模块(Modules)
模块是 现代 TypeScript/ArkTS 项目的主要代码组织方式,基于 ES6 模块系统(import/export)。每个文件都是一个独立的模块,变量和类型默认私有,需显式导出才能被其他文件使用。
导出(export)
// utils.ets
export function greet(name: string): string {
return `Hello, ${name}!`;
}
export const PI = 3.14159;
// 默认导出(一个文件只能有一个)
export default class Calculator {
static add(a: number, b: number): number {
return a + b;
}
}
导入(import)
// app.ts
import { greet, PI } from './utils'; // 具名导入
import Calculator from './utils'; // 默认导入
import { runningLock } from '@kit.BasicServicesKit';
console.log(greet("Alice")); // "Hello, Alice!"
console.log(`${Calculator.add(2, 3)}`); // 5
命名空间
命名空间(Namespace)的本质 就是 将一组相关的变量、函数或类封装在一个逻辑容器内,让它们通过一个共同的“调用者”(即命名空间名称)来访问。
// utils.ets
export namespace Math {
export function add(a: number, b: number): number {
return a + b
}
export const PI = 3.14159;
export function sub(a: number, b: number): number {
return a - b
}
export function circleArea(r: number): number {
return PI * r * r
}
}
export namespace ArrayUtils {
export function toString(array: number[]): string {
return array.join(",")
}
}
到另一个文件中,倒入命名空间
// app.ets 从utils.ets导入Maths和ArrayUtils命名空间
import { ArrayUtils,Maths } from '../utils/utils';
let arr = [1,2,3,4,5]
console.log(ArrayUtils.toString(arr));
let sum = Maths.add(1, 2);
let sub = Maths.sub(1,2)
let circle = Maths.circleArea(3)
恭喜你,模块和命名空间学完了,手动撒花🎉🎉🎉。
2143

被折叠的 条评论
为什么被折叠?



