Typescript: 共用体型を使用する場合、ES6ゲッタープロパティは存在しません

作成日 2016年06月09日  ·  1コメント  ·  ソース: microsoft/TypeScript

TypeScriptバージョン:

毎晩(1.9.0-dev.20160217)

コード

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

予想される行動:

example.fooは、どちらの方法でもエラーをスローしません。

実際の動作:

example.foo exampleExample | Object場合、 exampleがスローされます。

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

最も参考になるコメント

これはTypeScriptの通常の動作であり、 .foo持たない可能性のあるものからユーザーを保護します。

これを機能させるには、タイプを.fooを含むもの

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

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

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

>すべてのコメント

これはTypeScriptの通常の動作であり、 .foo持たない可能性のあるものからユーザーを保護します。

これを機能させるには、タイプを.fooを含むもの

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

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

  bar(example: Example | Object) {
    if (example instanceof Example) {
      example.foo;
    }
  }
}
このページは役に立ちましたか?
0 / 5 - 0 評価