【HarmonyOS NEXT】【编译构建】文件没有默认导出,但可以默认导入的场景说明
此场景编译时不报错,原因是编译时的配置文件中开启了allowSyntheticDefaultImports选项,不仅允许没有默认导出的声明文件让另一文件默认导入,还兼容从那些使用 CommonJS(require)导出模块的库中导入默认导出(default exports),例如可以import default默认导入类似react这样的三方库。声明文件没有默认导出,使用 import xxx f
·
问题现象
声明文件没有默认导出,使用 import xxx from ‘module’ 在另一文件默认导入,编译不报错。
// test.d.ts文件export const addFunction: {add: (a: number, b: number) => number}
// index.ets文件import test from './test'
test.addFunction.add(1,2)
原因说明
此场景编译时不报错,原因是编译时的配置文件中开启了allowSyntheticDefaultImports选项,不仅允许没有默认导出的声明文件让另一文件默认导入,还兼容从那些使用 CommonJS(require)导出模块的库中导入默认导出(default exports),例如可以import default默认导入类似react这样的三方库。
react例:安装@type/react包,使用默认导入的方式,编译不报错。
import React from "react"
let a: string = React.useId()
CommonJS例:用默认导入方式导入commonjs模块。
// 编译文件import allFunction from 'library'
allFunction.sub(1,2)
// 依赖包的声明文件 index.d.tsdeclare const allFunction : {sub: (a: number, b: number) => number}export = allFunction
// 依赖包的实现文件 index.jsfunction sub(a, b) {return a - b}
var allFuntion = { sub }module.exports = allFuntion
解决方案
如果源码文件没有默认导出,那么可以尝试使用import * as xx from ‘xxx’ 去导入。
更多推荐



所有评论(0)