Я иногда сталкиваюсь с ситуацией, когда у меня есть объект JavaScript неизвестного типа. Затем я выполняю проверку типа в скрипте и вызываю соответствующие функции в зависимости от обнаруженного типа. , например. как этоОткрытие динамического типа в компиляторе Google Closure
/**
* @param {!Array} aArray my array
*/
function actOnArray(aArray) {
}
/**
* @param {*} aObject an arbitrary object
*/
function doSomething(aObject) {
// make sure we have an array
if ((null != aObject) && Array.isArray(aObject)) {
actOnArray(aObject);
}
}
Запуск этого sniplet с помощью передовых компиляции в Google Closure Compiler, получает следующее предупреждающего сообщения:
JSC_TYPE_MISMATCH: actual parameter 1 of actOnArray does not match formal parameter
found : *
required: Array at line 14 character 15
actOnArray(aObject);
Это предупреждение имеет смысл, поскольку компилятор ничего не знаю о семантике не знает, мои type проверка.
Мой вопрос: как я могу комментировать код, чтобы сообщить компилятору, что в определенный момент я получил информацию о типе. В этом примере я хотел бы сказать внутри блока if, что теперь я точно знаю, что параметр aObject имеет тип! Array.