node.js - type 'typeof globalThis' har ingen indeksignatur
Jeg får denne feilen hver gang jeg prøver å legge til en funksjon i det globale Node.js-globalnavnerommet i et TypeScript-miljø.
Element har implisitt typen 'any' fordi typen 'typeof globalThis' ikke har noen indeksignatur
deklarerer det globale navnerommet
declare global {
namespace NodeJS {
interface Global {
signin(): string[]
}
}
}
så hvis jeg prøver dette
global.signin = () => {}
det returnerer en
Elementet har implisitt typen 'any' fordi typen 'typeof globalThis' ikke har noen indeks-signatur
Svar #1
Jeg hadde et lignende problem, og jeg fant ut at Nodes globale typinger ble endret nylig; du kan nå overstyre dem ved å gjøre:
// global.d.ts
declare global {
function someFunction(): string;
var someVariable: string;
}
Merk: dette vil ikke fungere med let eller const, du må bruke var.
// index.ts
global.someFunction = () => "some value";
global.someVariable = "some value";
Svar #2
Nedenfor er et eksempel for Node v16
// globals.d.ts
declare module globalThis {
var signin: () => string[];
}
Svar #3
Jeg hadde det samme problemet med en svelte.kit-app. Database-modulen min bruker en global variabel for å lagre dbClient som et løfte. VSCode sluttet å klage når global.d.ts-filen hadde dette innholdet.
import type { MongoClient } from 'mongodb'
declare global {
namespace globalThis {
var _mongoClientPromise: Promise<MongoClient>
}
}
Svar #4
Du bør deklarere en global som er erklært som et grensesnitt i global.d.ts slik:
export interface global {}
declare global {
var signin: ()=>string[]
}
VSCode gir riktige kodeforslag
