Versão TypeScript:
todas as noites (1.9.0-dev.20160217)
Código
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'.
}
}
Comportamento esperado:
example.foo
não geraria um erro em nenhum dos métodos.
Comportamento real:
example.foo
quando example
é Example | Object
arremessa:
error TS2339: Property 'foo' does not exist on type 'Example | Object'.
Esse é o comportamento normal do TypeScript, pois está protegendo você contra algo que pode não ter um .foo
.
Se quiser que isso funcione, você precisa restringir o tipo a algo que contenha .foo
:
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
if (example instanceof Example) {
example.foo;
}
}
}
Comentários muito úteis
Esse é o comportamento normal do TypeScript, pois está protegendo você contra algo que pode não ter um
.foo
.Se quiser que isso funcione, você precisa restringir o tipo a algo que contenha
.foo
: