javascript - TypeScript .d.ts-deklarationer upptäcks inte när checkJs används


Jag skulle vilja lägga till typdefinitioner till en befintlig JavaScript-kodbas

Jag försöker definiera en funktion i min index.d.ts:

declare function func(): () => 42;

I index.js:

// NOT type-checked
const func = () => {};

Filen jsconfig.json:

{
  "compilerOptions": {
    "module": "ES6",
    "noEmit": true,
    "checkJs": true,
    "allowJs": true,
    "strict": true
  },
  "exclude": ["node_modules"]
}

Medan import och uttryckliga JSDoc-kommentarer relaterade till .d.ts typkontrolleras korrekt, verkar func-typen som deklareras i .d.ts-filen inte upptäckas

Inte säker på om det är avsedd beteende, bugg eller felkonfiguration

Den fullständiga repro är tillgänglig på GitHub

Svar #1

Du behöver ange typen uttryckligen, på följande sätt:

// index.d.ts
declare namespace MyNamespace {
  type MyFunc = () => 42;
}
/** @type {MyNamespace.MyFunc} */
const func = () => 42;
// const func = () => {}; // this will now yield an error