tsconfig - Hur man använder gränssnitt från en .d.ts-fil utanför det aktuella projektet genom projektreferenser i TypeScript?


Jag är ny på TypeScript. Jag arbetar med ett React-frontend och Express-backendprojekt. Min projektmappstruktur ser ut som följande:

server/
├─ src/
│  ├─ index.d.ts
│  ├─ someFile.ts
├─ tsconfig.json
web/
├─ src/
│  ├─ index.d.ts
├─ tsconfig.json

Jag försöker använda några gränssnitt som deklarerats i web/src/index.d.ts inuti en fil i server/src/someFile.ts. Jag har tittat på TypeScript-projektreferenser men jag är inte säker på hur man använder det. Det jag har gjort just nu är server/tsconfig.json-filen:

{
  "compilerOptions": {
    ...
  },
  "include": ["src"],
  "references": [
    {
      "path": "../web"
    }
  ]
}

filen web/tsconfig.json:

{
  "compilerOptions": {
    ...,
    "composite": true,
    "declaration": true,
    "declarationDir": "./types",
    "declarationMap": true
  },
  "include": ["src"],
  "references": [{ "path": "./tsconfig.node.json" }] // This is from using Vite
}

och slutligen min web/src/index.d.ts-fil:

declare module "web-types" {
    export interface Foo {
        bar: string
    }
}

Nu när jag försöker importera ett gränssnitt från web/src/index.d.ts inuti server/src/someFile.ts som:

import { Foo } from "web-types"

export const someFunction = (param: Foo) => {
    ...
}

Det ger mig felet: Kan inte hitta modulen 'web-types' eller dess motsvarande typdeklarationer.ts. Hur kan jag fixa detta?

Relaterade artiklar