• tgv@programming.dev
    link
    fedilink
    arrow-up
    1
    arrow-down
    1
    ·
    2 years ago

    So what’s the type of x in

    x = 1;
    x = x + "1";
    

    number? string? string|number? any?

    The ts compiler can make a fair amount of inferences, but at some points you need to nail down the type. Is that so bad?

    • Gecko@lemmy.world
      link
      fedilink
      English
      arrow-up
      4
      arrow-down
      1
      ·
      2 years ago

      Type error unless there’s an implementation of + that specifies adding together and integer and a string.

      • jdeath@lemm.ee
        link
        fedilink
        English
        arrow-up
        5
        arrow-down
        1
        ·
        2 years ago

        💯% accurate. funny how the typescript developer thinks this is some kind of “gotcha!”… like maybe just try a language besides typescript and find out for yourself 😆

        • tgv@programming.dev
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          1
          ·
          2 years ago

          That’s such a weird take. Who cares what another language does? Your complaint was about typescript. Which lets the programmer decide what this should be. As you could have known.

          But most likely it was just trolling. On the plus side, at least now I know that the rigid minded devs came here too, and took their righteousness with them.

      • nyan@lemmy.cafe
        link
        fedilink
        English
        arrow-up
        2
        arrow-down
        2
        ·
        2 years ago

        Exactly. Most languages I know of that allow this at all will coerce the “1” to an integer and give x = 2. They get away with this because they define the “+” operator as taking numbers only as arguments, so if you hand them x = x + "cheese" they’ll error out.

    • sweeny@sh.itjust.works
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      2 years ago

      I’m not sure if you’re being rhetorical or not, but “string|number” is definitely correct here. A computer could definitely figure this out, but typing is for the benefit of the coders more than the code itself. It’s basically functional documentation

      • tgv@programming.dev
        link
        fedilink
        arrow-up
        2
        ·
        2 years ago

        That’s TypeScript’s whole point. It’s not for the computer, it’s for the programmer. It’s to avoid you assigning a string to something you elsewhere assume to contain a number. In Typescript, there’s just no solution for this, except requiring the programmer to specify the type. It can’t be inferred flawlessly.

        • sweeny@sh.itjust.works
          link
          fedilink
          arrow-up
          1
          ·
          2 years ago

          Yeah that’s what I’m saying, I hate it when coworkers will assign everything as “any” just to avoid the scary red squigglies. Oh well I guess that’s what code reviews are for 🙃