• dan@upvote.au
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    5 months ago

    Use TypeScript, and nonsensical things like adding arrays to objects will be compile-time errors.

    • CanadaPlus@lemmy.sdf.org
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      5 months ago

      Yup. The libraries underneath will still allow nonsense at runtime, though, and it will now be harder to see, so it’s a partial solution as done in standard practice.

      An all-TypeScript stack, if you could pull it off, would be the way to go.

        • CanadaPlus@lemmy.sdf.org
          link
          fedilink
          arrow-up
          0
          ·
          5 months ago

          Yeah, ideally TypeScript would be natively supported. Or maybe just Python, which is sort-of strictly typed, and definitely won’t do “wat”. Alas, it’s not the world we live in, and browsers take JavaScript.

          • dan@upvote.au
            link
            fedilink
            arrow-up
            0
            ·
            5 months ago

            Python supports type hints, but you need to use a type checker like Pyre or Pyright to actually check them. Python itself doesn’t do anything with the type hints.

        • thevoidzero@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          5 months ago

          If there was an easy way to use rust or something on webassemly and use that instead of JS. I’d be so happy, but I can’t find how to do it without npm.

      • dan@upvote.au
        link
        fedilink
        arrow-up
        0
        ·
        5 months ago

        Most libraries have TypeScript types these days, either bundled directly with the library (common with newer libraries), or as part of the DefinitelyTyped project.

        • CanadaPlus@lemmy.sdf.org
          link
          fedilink
          arrow-up
          0
          ·
          5 months ago

          DefinitelyTyped is the exact kind of thing I’m talking about. You put TypeScript definitions over things, but under the hood it’s still JavaScript and can fail in JavaScript ways.