Using Vanilla NPM Javascript Modules With Typescript | Task

Ole Ersoy
Feb - 14  -  1 min

Scenario

We occasionally come across NPM modules without type definitions.

We want to use these in our Typescript project, but typescript barks at us when we try to import hello. Specifically we get this error:

Could not find a declaration file for module ‘untyped-npm-module’. ‘~/typescriptexperiment/untyped-npm-module/index.js’ implicitly has an ‘any’ type.
Try `npm install @types/untyped-npm-module` if it exists or add a new declaration (.d.ts) file containing `declare module ‘untyped-npm-module’;`ts(7016)

So we need to add a declaration file.

Approach

mkdir -p src/@types/untyped-npm-module
touch src/@types/untyped-npm-module/index.d.ts

Then within index.d.ts add:

declare module 'untyped-npm-module' {
    export function hello(name: string): string;
}

And now it works:

Demo