• pooberbee (they/she)
    link
    fedilink
    arrow-up
    2
    arrow-down
    1
    ·
    1 month ago

    Yeah, you would get a runtime error calling that member without checking that it exists.

    • masterspace@lemmy.ca
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      27 days ago

      Because that object is of a type where that member may or may not exist. That is literally the exact same behaviour as Java or C#.

      If I cast or type check it to make sure it’s of type Bar rather than checking for the member explicitly it still works:

      And when I cast it to Foo it throws a compile time error, not a runtime error:

      I think your issues may just like in the semantics of how Type checking works in JavaScript / Typescript.