rss-parser icon indicating copy to clipboard operation
rss-parser copied to clipboard

tsc fails with strict mode on

Open repentsinner opened this issue 4 years ago • 2 comments

I've added rss-parser to a project that was using strict mode in tsconfig.json, and am getting failed builds:

node_modules/rss-parser/index.d.ts:1:25 - error TS7016: Could not find a declaration file for module 'xml2js'. '/Users/deg/Development/ts_rss_parser/node_modules/xml2js/lib/xml2js.js' implicitly has an 'any' type.
  Try `npm install @types/xml2js` if it exists or add a new declaration (.d.ts) file containing `declare module 'xml2js';`

I can either add @types/xml2js as a peer dependency or disable strict mode to get the project to build. I see that @types/xml2js is a devDependency in rss-parser, but I understand that npm doesn't recursively install dev dependencies.

I'm somewhat new to Typescript and npm dependency management behavior so I am not sure the best way to resolve this. Usually if something requires a peer dependency npm warns me. So far no other packages I'm using have triggered this compile error, but I can't figure out if/how they're configured differently w/r/t type definitions for their own dependencies.

I've got a minimal project to repro here: https://github.com/repentsinner/ts_rss_parser

Thanks for considering!

repentsinner avatar Jul 27 '19 01:07 repentsinner

Did some more reading on this, and I don't think I'm any clearer on the correct way to handle it:

https://github.com/microsoft/types-publisher/issues/81

Maybe mark it as a peerDependency so that npm indicates that it needs to be installed (rather than failing at compile time), but don't move it directly to dependencies as that appears to cause collisions in the global space?

repentsinner avatar Jul 27 '19 01:07 repentsinner

Thoughts on just copying xml2js's Options interface into this project's type definition?

namoscato avatar Sep 09 '20 16:09 namoscato