Постепенный ввод текста
-
Безопасность типа и постепенная типизация
- Постепенная типизация находится между статической и динамической типизацией.
- Статическая типизация проверяет правильность ввода во время компиляции, динамическая – во время выполнения.
- Постепенный ввод позволяет программистам выбирать между статической и динамической парадигмой ввода в рамках одного языка.
-
История и реализация
- Термин “постепенная типизация” был введен Джереми Сиеком в 2006 году.
- При постепенной типизации используется специальный тип dynamic для представления статически неизвестных типов.
- Отношение согласованности заменяет равенство типов и связывает динамический тип с другими типами.
- Подтипирование в языках с постепенной типизацией не исключает ошибок статического типа, как в динамических языках.
-
Примеры языков с постепенной типизацией
- Closure Compiler, TypeScript, Hack, PHP, Typed Racket, Typed Clojure, Cython, mypy, pyre, cperl – примеры языков с постепенной типизацией.
- ActionScript и J – примеры языков с постепенной типизацией, которые изначально не были динамическими.
- C# и Raku – примеры языков со статической типизацией, которые постепенно типизируются.
-
Проверка типов и нетипизированные переменные
- В Raku проверка типов выполняется во всех местах присваивания значений.
- Нетипизированные переменные вводятся как подходящие для всех значений.
- Компилятор выявляет конфликты проверки типов, если они никогда не будут успешными.
-
Постепенная типизация в Objective-C
- В Objective-C указатели на объекты имеют постепенную типизацию относительно вызовов методов.
- Статическая типизация используется для проверки соответствия класса объекта методу.
- Переменная типа id позволяет вызывать любой метод.
-
JS++ как пример постепенной типизации
- JS++ – это надмножество JavaScript с постепенной системой типов, подходящей для ECMAScript и DOM API.