Speriamo di avere ragione, perché non ho mai usato una mappa da "immutabile", quindi userò uno es6 Map.
Perché non usi solo una lezione?
class Website extends Map<string, string> {
constructor(name: string, url: string) {
super()
this.set("name", name)
this.set("url", url)
}
}
In questo modo è possibile inizializzare in questo modo:
const website = new Website("awesome", "www.awesome.com")
e quindi eseguire le operazioni get e set.
Se si dimentica che i parametri flowtype generano un errore.
Spero che questa sia una soluzione per voi.
EDIT:
Si potrebbe anche solo creare una funzione che inizializza la vostra mappa.
declare type WebsiteType = Map<string, string>
function createWebsite(name: string, description: string) {
const website: WebsiteType = new Map
website.set("name", name)
website.set("description", description)
return website
}
Tuttavia trovo la prima soluzione più bello perché ti dà un tipo di sito web e non c'è bisogno di creare una funzione di creatore.
EDIT:
Se si desidera che la stessa sintassi come facevi la mappa di inizializzazione, si potrebbe anche fare:
class Website extends Map<string, string> {
constructor({name, url, ...rest}) {
super()
this.set("name", name)
this.set("url", url)
for(const name in rest) {
this.set(name, rest[name])
}
}
}
Tuttavia penso che il primo significativo.
Ehi, in realtà sto cercando una risposta simile. Hai trovato qualcosa? –
Ciao Non ho trovato un modo per farlo con flowtype. Tuttavia, vi è il tipo di record in immutablejs che consente di raggiungere lo stesso obiettivo dichiarando una mappa vincolata con valori predefiniti. Cf: https://facebook.github.io/immutable-js/docs/#/Record – Nihau