Je rencontre parfois un problème avec un objet JavaScript de type inconnu. Ensuite, j'effectue un script de vérification de type et appelle les fonctions appropriées en fonction du type détecté. par exemple. comme celui-ciDécouverte de type dynamique dans Google Closure Compiler
/**
* @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);
}
}
L'exécution de cette sniplet via la compilation avancée dans le compilateur de fermeture google donne le message d'avertissement suivant:
JSC_TYPE_MISMATCH: actual parameter 1 of actOnArray does not match formal parameter
found : *
required: Array at line 14 character 15
actOnArray(aObject);
Cet avertissement est logique, puisque le compilateur ne sait rien au sujet de la sémantique de mon type de vérification.
Ma question est: comment puis-je annoter le code pour dire au compilateur qu'à un certain point j'ai acquis des informations sur un type. Dans cet exemple, je voudrais dire à l'intérieur du bloc if que je sais maintenant avec certitude que le paramètre aObject est de type! Array.