【发布时间】:2021-02-28 10:06:06
【问题描述】:
我正在动态导入导出多个函数的 javascript 文件(并且没有默认导出)
const sayHi = import('./sayHi.js')
我希望 sayHi 的类型是 Promise<{name1: function, name2: function}>
但它是
Promise<{default: typeof import('./sayHi.js'), name1: function, name2: function}>
为什么要添加默认道具
这是一个代码框 https://codesandbox.io/s/typescript-dynamic-import-w4nb1?file=/src/index.tsx
【问题讨论】:
-
@NicholasTower 对不起我的错误。我已经更正了链接以显示类型错误。您可以将鼠标悬停在第 6 行的红色波浪线上
-
你能记录下 promise 结果,看看它在运行时的实际样子吗?我猜“默认”属性的存在是为了确保在
module.exports被覆盖时的互操作性,而不是在其上设置属性。 -
@JonasWilms 谢谢。我确实记录了它,但没有默认道具。随意看看这个叉子,我在哪里做过。 codesandbox.io/s/typescript-dynamic-import-forked-oxjqo?file=/…
-
这怎么是一个javascript问题
-
可能与tsconfig中的
allowSyntheticDefaultImports有关:typescriptlang.org/tsconfig#allowSyntheticDefaultImports
标签: javascript reactjs typescript es6-promise es6-modules