• 0 Posts
  • 7 Comments
Joined 1 year ago
cake
Cake day: July 23rd, 2023

help-circle


  • and I mostly work on my own projects

    Then your opinion is absolutely understandable.

    It’s also frustrating b/c types don’t guarantee that the system does-the-thing, only that the type-system and compiler are happy, so it’s like pleasing the wrong boss, or some metaphor like that.

    Types help you refactoring and communicating with other team members about expected inputs/outputs. Did you ever try debugging a number that should’ve been a string in a codebase that you didn’t write? Example from today: jsforce will throw an exception when you pass a number instead of string due to the fact that the Salesforce server will complain that the type is incorrect. If the method had correct typing of “string”, it would save me a few hours of debugging a huge library without visibility inside of it…






  • If you are using TypeScript it’s quite easy to create a system where the type system will enforce the existence of all translations. I think it should be possible to create a similar solution for other languages as well.

    For example:

    const enTranslations = { MENU: ‘’ };

    const plTranslations: typeof enTranslations = { MENU: ‘’ } as const;

    const t = (key: keyof typeof enTranslations) => get language() == ‘pl’ ? plTranslations[key] : enTranslations[key];

    Missing keys will fail compilation. If you want to skip check you can always use //@ts-ignore

    Additionally the type system will enforce only valid translation keys so you won’t be able to make a typo it forget to add English translation.