Spodziewałem ten kod wpisać sprawdzić in Flow jak to robi in TypeScript:Dlaczego funkcja Flow nie wnioskuje o typie funkcji na podstawie tego, co zwraca?
var onClick : (() => void) | (() => boolean);
onClick =() => { return true; }
Zamiast tego, otrzymuję ten błąd:
4: onClick =() => { return true; }
^function. Could not decide which case to select
3: var onClick : (() => void) | (() => boolean);
^union type
istnieje ogólna nazwa dla tej decyzji projektowej, a co jest rozumowanie za tym?
Czy można poprosić kontroler przepływu o wybranie typu zwrotu funkcji z instrukcji zwrotu?
nie mam dla ciebie odpowiedź, ale dlaczego nie do '(() => Obiecuj | void)'? –
loganfsmyth
mają na myśli różne rzeczy: '() => A | B' jest pojedynczą funkcją, która czasami zwraca 'A', a inne razy zwraca' B', natomiast '(() => A) | (() => B) 'jest funkcją, która zawsze zwraca' A' lub funkcję, która zawsze zwraca 'B'. –
np. najedź kursorem na połączenie w linii 5 tutaj: https://www.typescriptlang.org/play/index.html#src=const%20f%20%3D%20 (x)% 20% 3D% 3E% 20console.log (x)% 3B% 0D% 0Aar% 20onKliknij% 20% 3A% 20 (()% 20% 3D% 3E% 20void)% 20% 7C% 20 (()% 20% 3D% 3E% 20Promise% 3Unikaj% 3E) % 3B% 0D% 0AonClick% 20% 3D% 20()% 20% 3D% 3E% 20f (% 22hi% 22)% 3B% 0D% 0A% 0D% 0AonClick()% 3B –