排除/覆盖npm提供的打字

时间:2017-01-13 04:56:29

标签: typescript typescript-typings

我有一个npm包,写得不好,过时的打字。我已经写了自己的打字,现在我想知道我是否能以某种方式排除npm包中的原始输入。它不是接口的简单扩展,此时原件基本上都是垃圾。

使用tsconfig.json中的排除列表当然不能用于此目的,因为即使您排除该文件夹,它仍会从node_modules加载文件。

2 个答案:

答案 0 :(得分:10)

node_modules下创建src文件夹,然后输入要覆盖的模块类型:

├── node_modules
│   └── ...
│
└── src
    ├── index.ts
    ├── ... your codes ...
    │
    └── node_modules
        └── <module-to-be-overwritten>
            └── index.d.ts

无需修改tsconfig.json中的compilerOptions

https://www.typescriptlang.org/docs/handbook/module-resolution.html中读取 TypeScript如何解析模块部分。

答案 1 :(得分:9)

您可以使用tsConfig中的paths选项获得所需的行为 它可能看起来像这样:

//Initially, have your LoginLayout GONE and MainLayout VISIBLE
if (!isUserLoggedIn) {
    MainLayout.setVisibility(View.GONE);
    LoginLayout.setVisibility(View.VISIBLE);
    /*
    Code to get user logged in,
    then restart activity, 
    or simply hide LoginLayout and show MainLayout
    */
} 

使用此配置typescript在src中查找模块(应该有所有应用程序源),并且在声明中,在声明文件夹中我通常会放置我需要的额外声明。

要覆盖节点模块的类型,有两个选项:

  1. 在声明文件夹中放置一个名为模块的文件夹,其中包含一个名为index.d.ts的文件,用于打字

  2. 在声明文件夹

  3. 中放置一个名为模块的声明文件

    作为一个工作示例,您可以查看此回购https://github.com/kaoDev/react-ts-sample

    Bernhard Koenig的重要提示:

      

    路径的顺序很重要。我必须在具有原始类型定义的路径之前使用我的覆盖放置路径,以便首先拾取我的覆盖。 - Bernhard Koenig