Sto cercando di definire un oggetto con un simbolo come tipo di chiave poiché MDN dice:
Un valore di simbolo può essere utilizzato come identificatore per le proprietà degli oggetti [...]
Ma usandolo come tipo per la proprietà-chiave:
type obj = {
[key: symbol | string]: string
}
provoca il seguente errore:
TS1023: Un tipo di parametro di firma indice deve essere 'stringa' o 'numero'.
anche può essere usato come tipo di indice. Sto usando l'ultima versione di dattiloscritto ( v3.7.2
), domande correlate che ho trovato:
- Dattiloscritto: destrutturazione di un oggetto con simboli come chiavi (usa un'istanza reale di un simbolo, voglio il tipo
symbol
) - TypeScript: un parametro di firma indice deve essere una 'stringa' o 'numero' quando si tenta di utilizzare la stringa | numero
- ES6: destrutturare un oggetto con simboli come chiavi (che non può essere una soluzione - sembra un po 'sbagliato usare un'istanza reale come tipo poiché ogni istanza di Symbol è unica ...)
Ho anche dato un'occhiata ai documenti dei simboli dattiloscritti, ma mostrano solo come viene usato come valore, non come tipo.
Esempio:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
any
quale è una cattiva pratica).
Map<Symbol,String>
come abbiamo Map, se questo avrebbe avuto lo scopo di quello che stai cercando di ottenere
symbol
? Magari mostra un esempio di come vuoi usare il tuotype obj
- Dubito che tutte le proprietà con chiave di simbolo sarannostring
s.