首页 > 解决方案 > 如何创建匹配复杂路径的 TypeScript 模块?

问题描述

我想声明一个针对所有图像导入的全局模块和另一个针对所有图标导入的全局模块,因为在我正在处理的项目中对它们的处理方式不同。图像导入通常来自images文件夹和icons文件icons夹,但它们的扩展名可以相同。

根据模块通配符文档,我想到了这样的事情:

declare module '*/icons/*' {
    type IconType = { viewBox: string, symbol: string };

    const icon: IconType;
    export = icon;
}

declare module '*/images/*' {
    const url: string;
    export = url;
}

但这似乎不起作用。有没有其他方法可以做到这一点?在 Flow 中可以定义它,module.name_mapper但如何在 TypeScript 中定义呢?

标签: typescriptmodule

解决方案


尝试通过文件后缀声明模块,每种文件类型一个声明。

declare module '@my/module/src/images/*.svg' {
  type IconType = { viewBox: string, symbol: string };

  const icon: IconType;
  export = icon;
}

declare module '@my/module/src/icons/*.svg' {
  const resource: string;
  export = resource;
}

推荐阅读