typescript - Varför måste jag specificera typer i tsconfig.json om typspecifikationerna redan finns i package.json


Jag har "@types/gapi.client.gmail": "~1.0.3" i package.json.

Jag hade också detta i tsconfig.json:

  "types": [
    "jest",
    "gapi",
    "gapi.auth2",
    "gapi.client.docs"
  ],

Jag kan inte komma ihåg varför de där uttalandena finns där. Men nu när jag lägger till Gmail-stöd i min app vill jag förstå varför jag behöver lägga till Gmail i denna typ-array, så att den blir:

  "types": [
    "jest",
    "gapi",
    "gapi.auth2",
    "gapi.client.docs",
    "gapi.client.gmail"
  ],

Utan detta tillägg får jag:

TS2339: Property 'gmail' does not exist on type 'typeof client'.

Varför måste jag lägga till typer i tsconfig-arrayen om typerna redan är deklarerade i package.json som beroenden?

Svar #1

När du definierar dina typer på det sättet kommer bara typerna i listan att importeras, och inte alla tillgängliga typer under dina node_modules.

Relevanta dokument- https://www.typescriptlang.org/tsconfig#types