Dziwne pytanie zadajesz. Albo ja tego pytania nie rozumiem.
Zaczynasz od różnic pomiędzy językami interpretowanymi, a kompilowanymi - a kończysz na typowaniu silniejszym i słabszym. Tymczasem jedno z drugim nie ma niczego wspólnego. To dwie zupełnie niezależne kategorie. (Trochę tak, jakby się zastanawiać, czy trawa jest bardziej zielona, czy bardziej mokra od stojącego w pobliżu drzewa.)
O ile sprawa z typowaniem statycznym i dynamicznym jest prosta i w zasadzie zero-jedynkowa: albo mamy typowanie statyczne, albo dynamiczne, o tyle typowanie słabe (słabsze?) i silne (silniejsze?) już tak nie wygląda. (Pomijając już fakt, że te dwie kategorie typowania są często mylone.) Wszystko zależy od tego, jakie ograniczenia są nakładane na operacje, które można wykonać z danymi różnych typów. A te ograniczenia są różne, no i może ich być więcej, lub mniej.
Weźmy taki JavaScript: da się tam dodać napis do liczby (otrzymamy napis). To "ciągnie" JS w kierunku słabego typowania. Ale już poza tym przypadkiem, to w JS mamy w zasadzie same obiekty (tam wszystko jest obiektem!). No to o jakim typowaniu mowa? Jak obiekt, to obiekt. Do funkcji przekazujemy obiekt, zwracamy obiekt, do zmiennej przypiszemy obiekt... A że jeden obiekt to napis, drugi to tablica, a trzeci akurat to Object, to kogo obchodzi? Może poza programistą, który musi nad tym bałaganem jakoś zapanować.
W TypeScript jest już nieco lepiej, bo można dokładniej określić typy. Pytanie tylko, co z tego, skoro mamy takie Any. (A nawiązując do odpowiedzi jankustosz1, nieco czepialsko napiszę: TypeScript nie jest interpretowany, tylko transpilowany do JS - więc czy w ogóle pasuje do kategorii języków interpretowanych, rzekomo silniej typowanych? Ale to tylko pokazuje, że pytanie jest nieprecyzjnie zadane.)
W takim C (wiem, wiem, kompilowany) jest już nieco lepiej: napisu (czyli: tablicy znaków) do liczby nie dodamy. (Zresztą jakiego typu miałby być wynik?) Ale już spokojnie przekażemy do funkcji int-a, czy double, niezależnie od tego, jakiego typu (liczbowego) funkcja potrzebuje - typ zostanie domyślnie skonwertowany przez kompilator (co z mojego punktu widzenia zakrawa niemalże na zbrodnię). Ponadto jest możliwa jawna konwersja danej praktycznie dowolnego typu na dowolny inny - bo kto nam zabroni potraktować bajty z pamięci komputera jako typ, o którym sobie akurat pomyślimy? Bajty to bajty.
Porównajmy to teraz do takiego OCamla (wiem, wiem, kompilowany), w którym nie dodamy nawet liczby całkowitej do zmiennoprzecinkowej, bez jawnej konwersji. To jest dopiero silne typowanie! Z tym, że nie ma to nic wspólnego z tym, że OCaml jest kompilowany.
A jeśli chodzi o języki interpretowane (???), to do JS można skompilować taki PureScript, który ma (1) znacznie lepszy system typów (TS niech się schowa), (2) jest typowany silnie - z typami nie ma tam żartów. Tylko że PS można też skompilować do np. C (albo C++, nie pamiętam już) i wtedy zrobi się z niego język kompilowany. (???)
Kiedyś (lata temu) używałem też ReasonML (obecnie to się chyba nazywa po prostu Reason), który jest mniej-więcej odpowiednikiem OCamla, transpilowanym do JS. Ale znowu - ReasonML nie jest bezpośrednio interpretowany (jak TS, czy PS), więc czy w ogóle zaliczyć go do kategorii, o której mowa w pytaniu?