In Typescript how to Ignore NPM package's built-in declaration file?

typescript

Solution

First option:

Don't use @types npm modules and put all the declarations by hand in `d.ts` files that you include in your `tsconfig.json`. You'll have to wrap the definition with `declare module "mymod" {...}` for all pkgs.

Besides doing this make sure to add this compilerFlag in your config `"moduleResolution": "classic"`

Second option:

Vendor the whole npm pkg you want to correct the declarations for. You keep using @types pkgs but fix the one npm pkg not working for you.

Third:

Send a PR to the pkg creator.

This is actually the result of help of Arnavion in ##typescript in IRC freenode. Just posting it here for people with the problem.

Problem

I'm using NPM package `react-hyperscript-helpers`. When I import it it'll read `index.js` and take the types from `index.d.ts`. These types however seem to be outdated since I get a lot of errors like this: `node_modules/react-hyperscript-helpers/lib/index.d.ts(546,53): error TS2314: Generic type 'HTMLAttributes<T>' requires 1 type argument(s). ` I know how to fix the type errors but I cannot of course edit the file under `node_modules` because it would get overwritten in the next `npm install`. How do I ignore the included `.d.ts` file and use mine instead? I tried ignoring all of `node_modules` in `tsconfig.json` and setting the `typings` option but without any success. Here's that file if it's any use: ``` { "compilerOptions": { "outDir": "./dist/", "sourceMap": true, "noImplicitAny": true, "module": "commonjs", "target": "es5", "jsx": "react", "typeRoots" : ["./typings"] }, "include": [ "typescript/**/*" ], "exclude": [ "node_modules/**/*", "node_modules/react-hyperscript-helpers/lib/*.ts" ] } ```

Original source