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
