Version TypeScript :
tous les soirs (1.9.0-dev.20160217)
Code
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
example.foo; // error TS2339: Property 'foo' does not exist on type 'Example | Object'.
}
}
Comportement prévisible:
example.foo
ne renverrait pas d'erreur dans l'une ou l'autre méthode.
Comportement réel :
example.foo
quand example
est Example | Object
lance :
error TS2339: Property 'foo' does not exist on type 'Example | Object'.
C'est le comportement normal de TypeScript car il vous protège contre quelque chose qui pourrait ne pas avoir de .foo
.
Si vous voulez que cela fonctionne, vous devez réduire le type à quelque chose qui contient .foo
:
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
if (example instanceof Example) {
example.foo;
}
}
}
Commentaire le plus utile
C'est le comportement normal de TypeScript car il vous protège contre quelque chose qui pourrait ne pas avoir de
.foo
.Si vous voulez que cela fonctionne, vous devez réduire le type à quelque chose qui contient
.foo
: