В нетипизированном языке, во время выполнения утверждение может поймать «ошибку типа»:Do Hack программисты используют утверждения runtime?
<?php
function add_one($x) {
assert(is_int($x));
return $x+1;
}
?>
С примечаниями типа Hack, я хотел бы удалить утверждения, но это небезопасно, потому что нетипизированный код может до сих пор называют типизированных функцию.
<?hh // strict
function add_one(int $x): int {
return $x+1;
}
function evil(): void {
// UNSAFE
add_one("yes"); // Runtime error!
}
?>
К любым профессиональным разработчикам Hack: применяете ли вы подписи типов с утверждениями? (Мне бы очень хотелось знать, что такое политика Facebook, но я понимаю, если это секрет.)
Да, с обработчиком ошибок, который преобразует ошибки аннотации типа во что-то более полезное, чем «E_RECOVERABLE_ERROR» и пустая белая страница. Facebook выдает исключение, которое мы обнаруживаем на основных границах ошибок, например, поэтому ошибка в одной новостной ленте просто приводит к сбою одной истории, а не всей странице. –