Le compilateur dactylographiée accepte le code suivant sans signaler une erreur:tapuscrit: Type de paramètre dans la méthode héritée doit être déduit
class S {
f(p: number) {
console.log(`${p + 1}`);
}
}
class C extends S {
f(p) {
super.f(p)
}
}
let a: C = new C();
let b: C = new C();
a.f(41); // -> 42
b.f('x'); // -> x1
tapuscrit étant un langage typé statiquement, ne doit pas le compilateur déduire le type de paramètre de p
dans la méthode héritée f
à number
? Pourquoi une attribution de la valeur de chaîne typée incorrecte est-elle laissée non prise, produisant un comportement étrange?
Merci, Ryan, Je suis d'accord que la substitution est valide avec un paramètre plus général. Bien que, à mon humble avis, l'appel 'super.f (p)' ne devrait pas être autorisé avec un argument d'un type indéfini (_any_). Existe-t-il un moyen d'imposer une telle vérification de type par le compilateur? –