Zły typ argumentu
Argument of type 'number' is not assignable to parameter of type 'string'.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Ta sama porażka przypisywalności co TS2322, tyle że w miejscu wywołania. Osobny kod, bo naprawa niemal zawsze leży gdzie indziej.
Odtworzenie
declare function take(value: string): void take(1)
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
Parametr to zmienna, którą funkcja deklaruje w twoim imieniu, więc przekazanie argumentu jest przypisaniem i podlega tym samym regułom. Ma własny kod, bo ciekawe pytanie jest inne: przy TS2322 zwykle wybrałeś złą wartość, a przy TS2345 zwykle wołasz coś, co oczekuje kształtu, którego jeszcze nie zbudowałeś. Funkcja powiedziała ci dokładnie, czego chce, w drugiej połowie komunikatu.
Naprawy
- 01
declare function take(value: string): void take('1')
Przekaż to, o co prosiła.
- 02
declare function take(value: string | number): void take(1)
Albo zmień sygnaturę, jeśli funkcja od początku powinna to przyjmować. Warto tylko wtedy, gdy funkcja jest twoja, a jej ciało naprawdę jest bezpieczne dla szerszego typu.
Wniosek
Druga połowa komunikatu to specyfikacja. Zbuduj to, zamiast sięgać po `as`, żeby uciszyć pierwszą połowę.