首页 > 解决方案 > 是否可以覆盖本地模块的类型声明?

问题描述

我试图覆盖一个特定的打字稿模块对任何正在导入它的人的外观。

这是因为我有一些 webpack 规则实际上改变了这个模块在编译时的导出。

我在文件中有一个自定义模块声明custom.d.ts

declare module '*.worker' {
  class WebpackWorker extends Worker {
    constructor();
  }

  export default WebpackWorker;
}

然后我将此模块导入为

import MyWorker from './test.worker';

const worker = new MyWorker();

但是,我似乎无法让自定义模块声明识别出它属于我的 custom.d.ts 文件中声明的类型。有谁知道是否可以覆盖本地模块的导出类型?

标签: typescriptwebpack

解决方案


一种可能的解决方案是说 FileA.ts 有一个名为 Human 的导出,并且在 webpack 编译时 Human 将其名称更改为 Animal 是在该类中添加声明类型并导入类似...

export class Human {
    bark() {
        return "bark bark"
    }
}
export declare class Animal extends Human {};

然后在 FileB.ts 中,您可以导入 Animal 并在类型安全的情况下使用它。


推荐阅读