• masterspace
    link
    fedilink
    English
    arrow-up
    4
    arrow-down
    2
    ·
    edit-2
    1 month ago

    I think that might be user error as I can’t recreate that:

      • masterspace
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        26 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.