打字稿声明模块导出

时间:2021-03-17 08:04:55

标签: typescript

  1. 我有 npm 包 A,npm 包 B,应用程序 C
  2. A 中有一个接口
interface Node {
  name: string;
}
  1. 我希望在 npm 包 B 中扩展这个接口,所以我做到了
declare module "A" {
  interface Node {
    user: string;
  }
}
  1. 它可以在包 B 中使用,但现在的问题是,如何在应用程序 C 中获取 Node -> 用户
import { Node } from "A";

let node: Node = {
  name: "!",
  user: "!" // Type Error
}

(我可以在C中使用A B,但是如何让B中的扩展生效)

1 个答案:

答案 0 :(得分:0)

我改成下面的

答:

export interface Node extends Foo.NodeExtension {
  name: string;
}

declare global {
  namespace Foo{
    interface NodeExtension {}
  }
}

乙:

declare global {
  namespace Foo{
    interface NodeExtension {
      user: string;
    }
  }
}

C:

import { Node } from "A";

let node: Node = {
  name: "!",
  user: "!" // Right
}