10
Jaki jest odpowiedni sposób do czynienia z ecmascript-6Map
obiektów w flowtype?ES6 Mapa w Flowtype
const animals:Map<id, Animal> = new Map();
function feedAnimal(cageNumber:number) {
const animal:Animal = animals.get(cageNumber);
...
}
Błąd
const animal:Animal = animals.get(cageNumber);
^^^^^^^^^^^^^^^^^^^^^^^^ call of method `get`
const animal:Animal = animals.get(cageNumber);
^^^^^^^^^^^^^^^^^^^^^^^^ undefined. This type is incompatible with
const animal:Animal = animals.get(cageNumber);
^^^^^^^ Animal
dodana aktualizacji – vkurchatkin
Jeśli jedynym celem jest nie mieć 'void', można również użyć' if (animals.has (cageNumber)) ', która jest bardziej czytelny (i prawdopodobnie szybszy, ponieważ nie przydzielasz rzeczy, aby je usunąć zaraz po). Ale nie mam pojęcia, jak zwrócić coś właściwym typem, np. "Zwierzę". Według Flow twoje rozwiązanie i moje oba typy zwracania to 'void | Zwierzę ". Ma to sens, ponieważ prawdopodobnie nie chcesz, aby Flow odgadł, co robi twój kod, dlatego typ zwracany jest równy typowi 'animal'. Jeśli ktoś ma rozwiązanie tego, jestem zainteresowany. –