是否可以覆盖本地模块的类型声明?

时间:2019-04-04 01:48:16

标签: typescript webpack

我正在尝试覆盖任何导入它的特定打字稿模块的外观。

这是因为我有一些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文件中声明的类型。有谁知道是否可以覆盖本地模块的导出类型?

1 个答案:

答案 0 :(得分:0)

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

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

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