Typescript: ES6 Getter-Eigenschaft ist nicht vorhanden, wenn Union-Typen verwendet werden

Erstellt am 9. Juni 2016  ·  1Kommentar  ·  Quelle: microsoft/TypeScript

TypeScript-Version:

nächtlich (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'.
  }
}

Erwartetes Verhalten:

example.foo würde in keiner der Methoden einen Fehler auslösen.

Tatsächliches Verhalten:

example.foo wenn example Example | Object wirft:

error TS2339: Property 'foo' does not exist on type 'Example | Object'.
Question

Hilfreichster Kommentar

Dies ist das normale Verhalten von TypeScript, da es Sie vor etwas schützt, das möglicherweise kein .foo .

Wenn dies funktionieren soll, müssen Sie den Typ auf etwas einschränken, das .foo :

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

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

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

>Alle Kommentare

Dies ist das normale Verhalten von TypeScript, da es Sie vor etwas schützt, das möglicherweise kein .foo .

Wenn dies funktionieren soll, müssen Sie den Typ auf etwas einschränken, das .foo :

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

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

  bar(example: Example | Object) {
    if (example instanceof Example) {
      example.foo;
    }
  }
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

MartynasZilinskas picture MartynasZilinskas  ·  3Kommentare

jbondc picture jbondc  ·  3Kommentare

Antony-Jones picture Antony-Jones  ·  3Kommentare

seanzer picture seanzer  ·  3Kommentare

wmaurer picture wmaurer  ·  3Kommentare