Typescript: La propiedad getter de ES6 no existe cuando se usan tipos de unión

Creado en 9 jun. 2016  ·  1Comentario  ·  Fuente: microsoft/TypeScript

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'.
Question

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 :

class Example {
  get foo() {
    return true;
  }

  baz(example: Example) {
    example.foo;
  }

  bar(example: Example | Object) {
    if (example instanceof Example) {
      example.foo;
    }
  }
}

>Todos los comentarios

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;
    }
  }
}
¿Fue útil esta página
0 / 5 - 0 calificaciones