2016-09-08 2 views
0

Ich möchte die Funktionalität der Map-Klasse erweitern. Ich möchte beispielsweise Folgendes tun:Erweitern Immutable.js Typen

const someMap = Immutable.Map({ a: 1, b: 2 }); 
const {a, b} = someMap.batchGet('a,' 'b'); 

Wie kann ich die 'batchGet' -Methode korrekt zur Map-Klasse hinzufügen?

Antwort

2

Leider sind die unveränderlichen Core-Klassen standardmäßig nicht erweiterbar. Dies war eine Designentscheidung, um Anti-Patterns zu entmutigen und die Performance zu verbessern, siehe this discussion für Details.

Das heißt, Sie können Unveränderlich mit extendable-immutable, die philpl in Reaktion auf die oben genannten Github Problem erstellt. Für Sie würde das so aussehen:

import { Map } from 'extendable-immutable' 

class MyMap extends Map { 
    batchGet (...keys) { 
    let result = {} 
    keys.forEach(key => { result[key] = this.get(key) }) 
    return result 
    } 
} 

const myMap = MyMap({ a: 1, b: 2 }) 
const {a, b} = myMap.batchGet('a', 'b') 
+0

Danke. Das habe ich gebraucht –

Verwandte Themen