我有一个npm包,写得不好,过时的打字。我已经写了自己的打字,现在我想知道我是否能以某种方式排除npm包中的原始输入。它不是接口的简单扩展,此时原件基本上都是垃圾。
使用tsconfig.json中的排除列表当然不能用于此目的,因为即使您排除该文件夹,它仍会从node_modules加载文件。
答案 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中查找模块(应该有所有应用程序源),并且在声明中,在声明文件夹中我通常会放置我需要的额外声明。
要覆盖节点模块的类型,有两个选项:
在声明文件夹中放置一个名为模块的文件夹,其中包含一个名为index.d.ts的文件,用于打字
在声明文件夹
作为一个工作示例,您可以查看此回购https://github.com/kaoDev/react-ts-sample
Bernhard Koenig的重要提示:
路径的顺序很重要。我必须在具有原始类型定义的路径之前使用我的覆盖放置路径,以便首先拾取我的覆盖。 - Bernhard Koenig