node.js - Ingen indeks-signatur med en parameter av typen 'string' ble funnet på typen


Jeg kommer fra mobilapputvikling og har ikke mye erfaring med TypeScript. Hvordan kan man erklære et map-objekt av formen [string:any]?

FEILEN kommer på linje: map[key]=value;

Elementet har implisitt typen 'any' fordi uttrykk av typen 'string' ikke kan brukes til å indeksere typen 'Object'.

Ingen indekssignatur med en parameter av typen 'string' ble funnet på typen 'Object'.ts(7053)

 var docRef = db.collection("accidentDetails").doc(documentId);


 docRef.get().then(function(doc: any) {
   if (doc.exists) {
      console.log("Document data:", doc.data());
      var map = new Object();
      for (let [key, value] of Object.entries(doc.data())) {
        map[key] = value;

       // console.log(`${key}: ${value}`);
      }
  } else {
      // doc.data() will be undefined in this case
      console.log("No such document!");
  } }).catch(function(error: any) {
      console.log("Error getting document:", error);
  });

Svar #1

Du vil vanligvis ikke bruke new Object(). Definer i stedet map på denne måten:

var map: { [key: string]: any } = {}; // A map of string -> anything you like

Hvis du kan, er det bedre å erstatte any med noe mer spesifikt, men dette bør fungere i starten.

Svar #2

Du må erklære en posttype

var map: Record<string, any> = {};

https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeystype

Relaterte artikler