3 ms·
Types are massively helpful with JavaScript. I’ll never write untyped JS again if I can help it. Switching to typescript has done wonders for my productivity an
by cageface 8y ago
Types are massively helpful with JavaScript. I’ll never write untyped JS again if I can help it. Switching to typescript has done wonders for my productivity and code quality.
- rmsaksida 8y agoAgreed. Unsurprisingly a lot of libraries are being rewritten in TS, including some high profile ones. I've been writing JS for a decade and TypeScript was a game changer for me.
- techsin101 8y agoTell me few .. to me types were useful for hinting in ide but vscode already gives good hints
- simplify 8y agoTypes are not just for autocompleting, but also for making illegal states unrepresentable[0]. For example, let's say you have Question model with two types: MultipleChoice and ShortAnswer. In TypeScript you can model it like this: type MultipleChoice = { mode: 'mc' body: string choices: string[] expectedAnswer: number } type ShortAnswer = { mode: 'sa' body: string exampleAnswer: string } type Question = MultipleChoice | ShortAnswer TypeScript's compiler will then enforce data structure consistency across your entire codebase. For example, if you were rendering a question in React: type Props = { question: Question } const MyComponent = (props: Props) => { props.question.body // Ok, since all questions have a body props.question.choices // Type error, since only MC has choices if (props.question.mode === 'mc') { props.question.choices // Ok now, since we checked the mode of question } } You can also use these types to force certain code to always be correct. For example, if you wanted to display a human-readable version of a Question's mode, you could write: const prettyQuestionType: Record<Question["mode"], string> = { mc: 'Multiple Choice', sa: 'Short Answer', } and now TypeScript will force prettyQuestionType to contain keys for all modes. That includes when you add a new Question mode later. Once you learn how to lean on the type checker, you think less about such details, and your mind becomes freer to think at a higher level, increasing your overall productivity. There is a learning curve though, so be aware. [0] https://fsharpforfunandprofit.com/posts/designing-with-types-making-illegal-states-unrepresentable/ https://fsharpforfunandprofit.com/posts/designing-with-types...
- techsin101 8y agothis indeed looks useful. so you can give multiple types by using '|' ? and if there is vagueness compiler will let you know.. mind blown.