Typescript: Properti pengambil ES6 tidak ada saat menggunakan tipe gabungan

Dibuat pada 9 Jun 2016  ·  1Komentar  ·  Sumber: microsoft/TypeScript

Versi TypeScript:

setiap malam (1.9.0-dev.20160217)

Kode

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

Perilaku yang diharapkan:

example.foo tidak akan menimbulkan kesalahan pada kedua metode tersebut.

Perilaku sebenarnya:

example.foo ketika example adalah Example | Object melempar:

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

Komentar yang paling membantu

Itu adalah perilaku normal TypeScript karena menjaga Anda dari sesuatu yang mungkin tidak memiliki .foo .

Jika Anda ingin ini berfungsi, Anda perlu mempersempit jenisnya menjadi sesuatu yang berisi .foo :

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

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

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

>Semua komentar

Itu adalah perilaku normal TypeScript karena menjaga Anda dari sesuatu yang mungkin tidak memiliki .foo .

Jika Anda ingin ini berfungsi, Anda perlu mempersempit jenisnya menjadi sesuatu yang berisi .foo :

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

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

  bar(example: Example | Object) {
    if (example instanceof Example) {
      example.foo;
    }
  }
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat