typescript - IDE hittar inte de deklarerade globala typerna


Jag har en global skrivfil där jag definierar mina typer, variabler etc...

Nu är projektstrukturen sådan här:

trunk
   typings
     index.d.ts
   src
     Example.ts
     Example.d.ts
   tsconfig.json

I index.d.ts har jag låt oss säga

declare type userInfo = {
    username: string,
    password: string,
}

Men i Example.d.ts när jag använder userInfo direkt säger IDE:n att den inte kan hitta namnet medan tsc-kompilatorn inte visar något fel.

declare class Something {
   ...
   getUserInfo: () => userInfo; // <--- this is highlighted red
}

Det roliga är att när jag använder userInfo i Example.ts finns det inga markerade fel.

En annan rolig sak är när jag går till deklarationen så hoppar det till rätt rad i index.d.ts

Jag importerar inte typerna i någon av filerna eftersom de är globala typer.

Min tsconfig-fil ser ut som nedan:

{
    "compilerOptions": {
        ...
        "typeRoots": ["./typings"],
        ...
    },
    ...
}

Vad kan problemet vara?

Svar #1

Du bör inte deklarera typer. Declare är användbart när du vill ange att det finns någon javascript-klass i det globala variabelområdet (och därför kan inte Typescript se den). t.ex. :

declare class UserInfo {...} // typings.d.ts

Nu ska du istället använda vanliga type

type UserInfo = {...} // Example.ts

Ännu bättre, jag skulle föreslå att du använder gränssnitt i ditt fall, eftersom UserInfo-typen verkar vara enkel:

// Example.ts
interface UserInfo {
  username: string,
  password: string,
} 

Känn dig fri att fråga mig om du inte förstår något

Relaterade artiklar