DEV Community

Nhan Nguyen
Nhan Nguyen

Posted on

Beginner's TypeScript #27

Image description

Error Message: "Could Not Find A Declaration File"

Inside of the index.ts file, we have a single import:

import Diff from "diff"; // red squiggly line under diff
Enter fullscreen mode Exit fullscreen mode

There is an error under diff that reads:

// hovering over diff shows:
Could not find a declaration file for module 'diff'. Implicitly has an 'any' type.
Enter fullscreen mode Exit fullscreen mode

The diff package is listed in the package.json file, and we can see that it is present inside the node_modules folder. Why is not TypeScript letting us use it?

The issue is that the diff package does not include any TypeScript files, specifically a .d.ts file that contains types.

If we look at the JavaScript files for diff inside of node_modules, we can see that there are no types.

As the error message suggests, the fix for this error is to install the types for the diff package:

npm i --save-dev @types/diff
Enter fullscreen mode Exit fullscreen mode

The @types/diff package is maintained by a group of community members at the DefinitelyTyped GitHub. There are types for many popular JavaScript packages, including diff.

👉 Understanding the Declaration File

Once installed, We will find a new @types directory inside your node_modules, which contains the diff directory and an index.d.ts file.

The index.d.ts file describes the diff module, exporting a namespace, interfaces, and providing helpful comments describing the code. In this case, index.d.ts is not linked to the original repository and has a separate version on npm, but it is maintained in sync with the diff library.

🚀 Using diff

Now that we have the types, the error about lacking the necessary declaration file has gone away. We can use CMD + click to jump to different spots in the diff declaration file inside of node_modules.

DefinitelyTyped and the @types packages provide a way to add type declarations for projects that do not have built-in TypeScript support, making it easier to work with these libraries in our TypeScript projects.

I hope you found it useful. Thanks for reading. 🙏

Let's get connected! You can find me on:

Top comments (0)