Versión de TypeScript:
todas las noches (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'.
}
}
Comportamiento esperado:
example.foo
no arrojaría un error en ninguno de los métodos.
Comportamiento real:
example.foo
cuando example
es Example | Object
arroja:
error TS2339: Property 'foo' does not exist on type 'Example | Object'.
Ese es el comportamiento normal de TypeScript, ya que lo protege contra algo que podría no tener un .foo
.
Si desea que esto funcione, debe limitar el tipo a algo que contenga .foo
:
class Example {
get foo() {
return true;
}
baz(example: Example) {
example.foo;
}
bar(example: Example | Object) {
if (example instanceof Example) {
example.foo;
}
}
}
Comentario más útil
Ese es el comportamiento normal de TypeScript, ya que lo protege contra algo que podría no tener un
.foo
.Si desea que esto funcione, debe limitar el tipo a algo que contenga
.foo
: