2015-08-25 12 views
9

Czy można zdefiniować to specjalistyczne przeciążenie bez wprowadzania podpisu, który dokładnie pasuje do implementacji?Specyficzne przeciążenie maszynopisu

on(eventName: string, cb: Function); 
on(eventName: "view", cb: (args: { 
    foo: { 
    } 
}) => void); 
on(eventName: string, cb: Function) { 
} 

Kiedy usunąć go otrzymuję ten błąd:

Specialized overload signature is not assignable to any non-specialized signature.

Odpowiedz

8

Wyspecjalizowane przeciążenia są specjalnością od jednego z pozostałych podpisów przeciążeniowych (podpis realizacja nie jest widoczny, więc się nie liczy).

W przypadku użycia specjalistycznego przeciążenia musi istnieć co najmniej jeden podpis nie wyspecjalizowany, którego specjalna wersja "czyni wyjątek".

Typ zwrotu podpisu specjalistycznego musi być podtypem podpisu nie specjalistycznego.

Krótko mówiąc, musisz mieć przeciążenie, nawet jeśli jest identyczne z sygnaturą wykonania.