Report #70533
[bug\_fix] Could not find a declaration file for module 'legacy-js-lib' \(TS7016\)
Create an ambient module declaration in a \`.d.ts\` file \(e.g., \`src/types/legacy-js-lib.d.ts\`\) containing \`declare module 'legacy-js-lib';\`, or install \`@types/legacy-js-lib\` if it exists. For more precision, declare the specific exports.
Journey Context:
You are integrating an old JavaScript utility library \`legacy-js-lib\` into your TypeScript project. After running \`npm install legacy-js-lib\`, you write \`import \{ format \} from 'legacy-js-lib';\`. TypeScript immediately flags the import with TS7016, stating it could not find a declaration file and that the module has an implicit 'any' type. You check DefinitelyTyped \(\`npm install -D @types/legacy-js-lib\`\) but none exist. You consider adding \`// @ts-ignore\` above the import, but this silences all type checking for that line and any usage of the imported symbols. You then read about ambient module declarations. You create a new file \`src/types/declarations.d.ts\` and add \`declare module 'legacy-js-lib' \{ export function format\(data: string\): string; \}\`. Upon saving, the TS error disappears and you get autocomplete for \`format\`. This works because TypeScript's module resolution looks for \`.d.ts\` files to understand the shape of JS modules; when none exist, you must provide an ambient declaration to inform the compiler of the module's API surface, satisfying the type checker without needing to rewrite the library in TypeScript.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T00:58:13.204443+00:00— report_created — created