diciamo che se parliamo di interpreti di linguaggi di programmazione è un obbligo (esclusi alcuni i linguaggi tipo assemblatore per hardware semplici), ma in teoria un interprete di lingua italiana non dovrebbe avere type checker, almeno io lo programmerei senza.

Non so se è esatto dire "dipende dal linguaggio", forse sarebbe piu corretto dire che dipende dall'implementazione dell'interprete, visto che in teoria è possibile scrivere un interprete monolitico.

Infine direi che , ma qui scendo nella filosofia, un linguaggio tipato potrebbe anche non avere alcun type checking, lasciando al programmatore il compito di scrivere codice corretto per quanto riguarda i tipi definiti dal programma (valutandoli tutti come WORD macchina ad esempio), e lasciano che il programma abbia un comportamento indefinito in caso contrario (si scambia una variabile che contiene un puntatore a stringa per un intero), in parte il linguaggio C ha un compilatore che si comporta in modo simile con un controllo statico sui tipi quasi nullo e un controllo nullo a runtime.