typescript - Var/hur lägger man till d.ts för privata, scoped npm-moduler?


Jag försöker portera ett Javascript-projekt till Typescript. Jag har ett beroende som heter: @myscope/utils

En fil från detta importeras till ts-filen enligt följande:

import date = require('@myscope/utils/date');

När jag försöker kompilera detta får jag följande fel:

src/subfolder/something.ts(12,23): error TS2307: Cannot find module '@myscope/utils/date'.

Hur lägger jag till mina egna typer för privata moduler som denna?

Svar #1

Jag lyckades lösa detta själv. Jag hänvisade till informationen om att skriva deklarationsfiler

Nyckeln för att få modulen att lösas är att deklarera en modul med ett namn som är hela sökvägen till paketet. Jag skapade en index.d.ts-fil för modulen, som jag lade till i min files-sektion i tsconfig.json.

Filen innehöll följande deklaration:

declare namespace date {
  function now(): number;
}

declare module "@myscope/utils/date" {
   export = date; 
}

Även om det inte är nödvändigt, strukturerade jag mina importer som typings gör. Jag kan förenkla senare efter att jag har portat resten av applikationen.

Jag skapade följande filer:

mytypings/index.d.ts
mytypings/modules/@myscope/utils/index.d.ts

Observera att det inte finns någon datumdel i utils-sökvägen.

mytypings/index.d.ts innehåller en referensväg till mytypings/modules/@myscope/utils/index.d.ts och lades sedan till i avsnittet i tsconfig.json.

Min plan är att lägga till andra bibliotek på samma sätt.