什么类型的动态导入反应?

时间:2018-03-14 06:29:31

标签: reactjs typescript

打字稿:2.7.1

路径:xxx / xx

export default class Com extends React.Component {
  ... 
}

动态导入

let foo:Promise<any> = import('xxx/xx'); // right

但我想知道通用的具体类型。

1 个答案:

答案 0 :(得分:2)

最简单的方法是让编译器为你推断:

// foo will be inferred to a promise that returns an object of the module type 
// If you hover in vscode over foo you will see Promise<typeof "path to xxx">
let foo = import('./xxx); 

如果您确实需要该类型,则可以静态导入模块并按照建议使用typeof here。只要不使用模块的静态导入,就不会生成import语句:

import * as unusedModuleImport from "./xxx"; // will be ommited as long as you don't use it
type ModuleType = typeof unusedModuleImport; 
let foo: Promise<ModuleType> = import('./xxx);

注意

上面的答案是Typescript 2.9之前的最佳解决方法。 Typescript 2.9添加了对import types

的支持
export async function bar() {
    let foo: typeof import("./foo") = await import("./foo");
}