Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Exclude/overwrite npm-provided typings

I've got an npm package with badly written, out of date typings. I've written my own typings and now I'm wondering if I can somehow exclude the original typings from the npm package. It's not a simple extension of interfaces, the originals are basically garbage at this point.

Using the exclude list in tsconfig.json does not work for this purpose of course, since it still loads files from node_modules even if you exclude that folder.

like image 990
Simon Meskens Avatar asked Jan 13 '17 04:01

Simon Meskens


Video Answer


1 Answers

You can get the desired behavior with the paths option in the tsConfig It could look something like this:

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

With this config typescript looks for modules in src (there should be all the app source) and also in declarations, in the declarations folder I usually place my extra needed declarations.

To override the typings of a node module there are two options:

  1. place a folder named like the module inside the declarations folder, containing a file called index.d.ts for the typings

  2. place a declaration file, named like the module, inside the declarations folder

As a working example you can take a look at this repo https://github.com/kaoDev/react-ts-sample

An important hint by Bernhard Koenig:

The order of the paths matters. I had to put the path with my overrides before the path with the original type definitions so my overrides get picked up first. – Bernhard Koenig

like image 77
Kalle Avatar answered Oct 09 '22 11:10

Kalle