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
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:
place a folder named like the module inside the declarations folder, containing a file called index.d.ts for the typings
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
Create node_modules
folder under your src
, then put typings of module(s) you want to overwrite inside:
├── node_modules
│ └── ...
│
└── src
├── index.ts
├── ... your codes ...
│
└── node_modules
└── <module-to-be-overwritten>
└── index.d.ts
No need to modify compilerOptions
in tsconfig.json.
Read How TypeScript resolves modules section in https://www.typescriptlang.org/docs/handbook/module-resolution.html.