在代码中导入依赖时,有时加{},有时没有,import {A} from ’...',有什么区别呢?
在 ArkTS(及 TypeScript)中,
import { BusinessError } from '@ohos.base' 与 import BusinessError from '@ohos.base' 的区别在于导入的是模块的 “具名成员” 还是 “默认成员”,这由模块的导出方式决定。
1,加 {}:导入 “具名导出” 的成员
import { BusinessError } from '@ohos.base' 表示从 @ohos.base 模块中导入名为 BusinessError 的具名导出成员。
这要求 @ohos.base 模块内部通过 export 显式导出了 BusinessError(具名导出)。
在@ohos.base.d.ts中
export interface BusinessError<T = void> extends Error {...}
此时,BusinessError 是模块的 “具名成员”,必须用 {} 包裹才能正确导入。
2,不加 {}:导入 “默认导出” 的成员
import picker from '@ohos.file.picker';
在@ohos.file.picker.d.ts中
declare namespace picker {...}
export default picker;
3,核心区别总结
导入语法, 适用场景, 模块导出要求
import { X } from '模块' ,导入模块中用 export 导出的具名成员 ,模块必须有 export const/interface X。
import X from '模块', 导入模块中用 export default 导出的成员, 模块必须有 export default X。
具名导入对应 export 具名导出,名称必须一致,可导入多个成员,用 {} 包裹。
默认导入对应 export default 默认导出,名称可自定义,一个模块仅一个默认成员,无需 {}。
4,应用场景
具名导入:适合模块导出多个独立成员(如工具函数、接口、常量等),导入时可按需选择,避免冗余。
默认导入:适合模块核心功能唯一的场景(如一个类、一个主函数),导入时更简洁,且名称可灵活定义。