繁体   English   中英

排除/覆盖npm提供的打字

[英]Exclude/overwrite npm-provided typings

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

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

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

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

无需修改compilerOptions在tsconfig.json。

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

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

{
    "compilerOptions": {
       ...
        "paths": {
            "*": [
                "src/*",
                "declarations/*"
            ]
        }
    },
    ...
}

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

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

  1. 在声明文件夹中放置一个名为module的文件夹,其中包含一个名为index.d.ts的文件

  2. 在声明文件夹中放置一个名为模块的声明文件

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

Bernhard Koenig的一个重要提示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM