【问题标题】:Is it possible to override a local module's type declarations?是否可以覆盖本地模块的类型声明?
【发布时间】:2019-04-04 01:48:16
【问题描述】:

我正在尝试覆盖特定 typescript 模块对任何正在导入它的人的外观。

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

【问题讨论】:

    标签: typescript webpack


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      • 1970-01-01
      • 2019-12-06
      • 2014-05-21
      相关资源
      最近更新 更多