typescript - 动态导入的返回类型是什么?

标签 typescript typescript2.4

我有一个文件,其中 必须被异步加载,所以我做了一个函数,它加载这个文件并返回 Promise :

export function load() {
    // ...
    return import(filename);
}

这个函数的返回类型是什么? Promise<any>有效,但感觉很奇怪。我想把签名写成这样。
export function load() -> Promise<???>;

最佳答案

您需要使用导入类型和 TypeScript 2.9或更高。下面是一个例子:

my_module.ts

export const user = { name: "John", age: 30 };
export const event = { name: "Birthday", date: new Date(1989, 13, 2) };

演示文件
type ModuleType = typeof import("./my_module"); // This is the import type!

export function load(): Promise<ModuleType> {
    // ...
    return import("./my_module");
}

(async () => {
    const module = await load();
    console.log(module.user.age); // It works!
})();

tsconfig.json(添加以供引用)
{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "lib": [
      "es2015",
      "dom"
    ], 
    "strict": true,  
    "esModuleInterop": true
  }
}

关于typescript - 动态导入的返回类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52112948/

相关文章:

typescript - 使用通用的扩展接口(interface)不再可分配给父级

Angular 2 FormBuilder 类型

angular - 在 Observable 中的 xhr.send() 之后获取服务器响应

typescript :跨多个文件的同一命名空间内的可见性

typescript - 如何使用不同的回调重载参数干净地编写 TypeScript 函数

额外类型条件的 Typescript key

javascript - TypeScript 不对用 Array() 构造并用 fill 填充的数组进行类型检查

javascript - 如何在服务中缓存数据?

javascript - TypeScript + Mocha + Express - TypeError : app. 地址不是函数

javascript - Number(id) 或 +id 根据输入值产生不同的值