Статично типізовані мови, як правило, вимагають оголосити типи змінних, що перевіряється під час компіляції, щоб зменшити помилки. Слово "статичний" у "статично набраному" означає "статичний аналіз коду", який є процесом вивчення коду перед його виконанням. Хоча статично набраною мовою можна зробити висновок про тип змінної з правого боку виразу або фактичних параметрів, на практиці більшість статично типових мов вимагають явного оголошення типів змінних.
Мови, що динамічно вводяться, як правило, не вимагають, щоб декларації змінних мали типи, і вони роблять висновки змінних типів на основі типу, розрахованого в результаті оцінки правої частини кожного оператора призначення або фактичних параметрів для виклику функції. Оскільки змінній можна призначати кілька призначень протягом свого життя, її тип може змінюватися з часом, і саме тому вона називається "динамічно набраною". Крім того, середовище виконання потрібно відстежувати поточний тип для кожної змінної, тому тип пов'язаний зі значенням, а не з оголошенням змінної. Це можна вважати системою інформації про тип виконання (RTTI).
Елементи статично та динамічно набраних мов можна комбінувати. Наприклад, C # підтримує як статично, так і динамічно набрані змінні, а об'єктно-орієнтовані мови, як правило, підтримують ієрархію типів вниз. Статично типізовані мови зазвичай надають різні способи обходу перевірки типів, наприклад, за допомогою кастингу, відображення та динамічного виклику.
Сильний проти слабкого набору тексту стосується континууму того, наскільки мова намагається запобігти помилкам через використання змінної, як якщо б це був один тип, коли він насправді іншого типу. Наприклад, і C, і Java є типово типізованими мовами, однак Java використовує набагато сильнішу перевірку типу, ніж C. Наступний код C із задоволенням збирає та запускає, і він вводить випадкове значення у змінну b під час виконання, швидше за все, спричиняючи помилка:
char *a = "123";
int b = (int)a;
Еквівалентний код Java створює помилку компіляції, яка, як правило, є кращою:
String a = "123"
int b = (int)a;