The Concise TypeScript Book

(github.com)

154 points | by javatuts 10 hours ago

8 comments

  • MORPHOICES 5 hours ago
    When reading succinct technical documentation, I see how so many times the documentation attempts to cover everything possible. ~

    Most developers want guidance instead of exhaustive details. Developers want to know where they should focus their time and where they can afford to skim over the documentation. And they want to know where they should expect to encounter problems and difficulties.

    A simple framework to use when producing succinct technical documentation is to divide the documentation into three sections.

    Maps: Identify what type of problems this documentation can assist you with

    Defaults: Understand what the majority of people will experience and what to do about it.

    Exceptions: Identify when to deviate from the default recommendations.

    Succinct documentation does an excellent job of providing clarity by eliminating edge cases. The more clearly the user understands the documentation the more useful the documentation will be during the time where the user is experiencing the most confusion.

    The danger is the temptation to simplify the information contained within the documentation to such an extent that the user is left with a large amount of missing information and no method for seeking assistance with incomplete information.

    What situations have you encountered where the information contained within short technical documentation has been more helpful than official technical documentation? ~

    • WillAdams 2 hours ago
      The thing is, documentation isn't a monolithic thing --- it really needs to be sub-divided/categorized into subsets which are useful to specific categories of folks working on, or working with, a project:

      https://diataxis.fr/

      (originally developed at: https://docs.divio.com/documentation-system/)

      divides into 4 types of documentation:

      - Tutorials

      - Explanation

      - How-to Guides

      - Reference

      My own documentation got much better when I broke it up along those lines.

  • fallinditch 22 minutes ago
    Thanks for sharing, this is useful.

    To the author, congrats and thank you. I have one piece of feedback:

    When you are typing Typescript on your keyboard you are typing types using a strongly typed language.

    Some definitions would be useful to novices: 'type' as a noun or verb, in the mathematical context + the notion of 'strong'.

  • SilverSlash 7 hours ago
    I don't know if I'd call a book with 61 chapters "concise".
  • gnabgib 10 hours ago
    Popular in 2023 (215 points, 91 comments) https://news.ycombinator.com/item?id=36641634
  • tkiolp4 5 hours ago
    Please provide a PDF as well. I cannot read books in HTML format because I need to keep track of where i left. That means I either have to leave the browser tab open (but this is prone to accidentally closing it) or I need to bookmark every progress, which creates noise in my bookmarks. With a PDF I simply leave it, the reader remembers my last page. I also have a sense of progress with pdf.
  • locknitpicker 7 hours ago
    I was wondering what is the community's opinion on the official TypeScript Handbook

    https://www.typescriptlang.org/docs/handbook/intro.html

    • primitivesuave 5 hours ago
      I love the Typescript handbook, but wanted the examples to be "runnable". It turns out that the TypeScript compiler runs pretty fast in the browser for trivial code snippets, so I threw together https://ts.coach (TypeScript handbook with code examples that execute in the browser + instant type checking)
      • epolanski 5 hours ago
        This is neat, but has the same issue of all similar projects: mobile unfriendly editors for snippets editing.
        • primitivesuave 4 hours ago
          Thank you for the excellent feedback. I had this realization a while back that I'm a mobile user during "consumption" (e.g. browsing HN late at night), but a desktop user for "production" - now I see how it applies to this side project as well. Also, I still need to figure out some React performance issues which make it virtually unusable on pre-2020 machines :(

          This comment actually invigorated me to try the site from my phone and improve the experience, so I sincerely thank you for the motivation.

          • epolanski 2 hours ago
            The typescript documentation has the same issue.

            I've considered doing a similar project to yours writing or using some mobile friendly editor and hooking it directly into TypeScript's LSP, which can be easily added to a web page, but was never motivated/disciplined enough to push through it.

    • wk_end 6 hours ago
      Speaking only for myself, not for the community:

      It should be your first resource when looking something up, it's usually quite clear and often helpful, but I find it somewhat confusingly organized and rather incomplete. It's more of a reference than a tutorial or guidebook, per se.

    • tresil 5 hours ago
      I show people coming from object oriented backgrounds this page first in order to correct the perception that TypeScript is best used with that programming paradigm.

      https://www.typescriptlang.org/docs/handbook/typescript-in-5...

      • locknitpicker 4 hours ago
        > I show people coming from object oriented backgrounds this page first in order to correct the perception that TypeScript is best used with that programming paradigm.

        I think you're confusing things. Languages like Java or C# impose an artificial constraint that free functions don't exist and functions can only exist as members of a class. You don't see this constraint in OO languages such as C++.

        Also, it's a simplistic assertions to claim that classes have no place in TypeScript or aren't idiomatic. That's just nonsense based on specious reasoning. Classes/objects with function members are still the best way to implement some features. I'm seeing too many people writing absurd typescript code who go through great lengths to avoid a class because they think a class is taboo. They pull out convoluted stunts like passing closures as object members, just to avoid the sin of rolling out a class.

        • tresil 3 hours ago
          To clarify, I’m not claiming that classes have no place in Typescript. What I’m saying is that many people coming from OOP backgrounds tend to have the mistaken belief that TypeScript is best written with that paradigm. While it can be in some cases, it should not be assumed to be the best way. In fact, the documentation linked above asserts that “free functions over data” are extremely powerful, and “tend to be the preferred model for writing programs in JavaScript.”
    • throwthro0954 6 hours ago
      I prefer this over everything else I've seen so far, it actually is concise.
    • throw_await 6 hours ago
      Good, but it only gives a very brief overview, no explanations
      • epolanski 5 hours ago
        I don't know, the number of people that know what a mapped or sum types are is strikingly low, let alone some of the more advanced concepts or even tsconfig.

        I've always thought that typescript is in the real of technologies that developers use for years but never really master such as css. Maybe not as severe as css, but it's the same direction.

  • phplovesong 7 hours ago
    I know why typescript "succeeded", but always wonder what kind of web we would have if infact Haxe had become more popular for web in the early days. My guesstimate is we would have had bundlers in native code much, much earlier, and generally much faster and more robust tooling. Its only now we see projects like esbuild, and even TS being written in a compiled language (go), and other efforts in rust.

    Also it would have been interesting sto ser what influence Haxe would have had on javascript itself

    • skybrian 1 hour ago
      I assume you meant that the TypeScript compiler is being rewritten in Go. (At first I read it as something entirely different.)
    • Tade0 3 hours ago
      Same could be said about Java Applets or Flash and, in a way, about Elm. We've been there and this approach doesn't work.

      The creators of TypeScript realized early on that people don't need yet another ecosystem, but a migration path that won't pause development.

      • phplovesong 2 hours ago
        Thats true, but comes with a cost. TS has become an incredibly complex language, even it only provides types. Thats being said is will always lack features as it only "javascript".

        Haxe has a more robust, but simpler typesystem, that comes from ocaml.

        Haxe also compiles to C++ so making native tools would have been a breeze.

        TS sits at the top chair, but there is many "better" options out there, like Elm (even its kild of a dead languge) and ReScript/ReasonML etc.

        TS is good, but will never be a perfect language for javascript. It will always be a mediocre option, that is growing more and more complex in every new release.

        • Tade0 56 minutes ago
          Yes, amazing language - I recall having a look at it in 2013 when I was scrambling for a replacement for Flash (also amazing platform). Shame it doesn't solve the problem at hand.

          Hardly anyone cares TypeScript isn't perfect when they can migrate their (or anyone else's) terrible, but business-critial JS library to TS and continue development without skipping a beat.

          For the same reason ReasonML took years to overtake fartscroll.js in the number of stars on GitHub.

          A huge part of TS's complexity is there so that library authors can describe some exotic behaviours seen normally only in dynamically-typed languages. When you're writing an app you don't need the vast majority of those features. Personally I regret every usage of `infer` in application code.

    • llmslave3 7 hours ago
      Or Lua... :>
      • forgotpwd16 5 hours ago
        Then comparison will've been Haxe to TypeLua rather TypeScript. Typing addition seems inevitable.
  • embedding-shape 4 hours ago
    > Some of the benefits of TypeScript:

    > Access to ES6 and ES7 features

    > Cross-Platform and Cross-browser Compatibility

    Damn, I wasn't aware that since I avoid TS, I cannot use ES6 and ES7, and my vanilla JavaScript doesn't run in all browsers :(

    I guess over-hyping the technology that the book is about is to be expected, but it still leaves a slightly sour taste in my mouth when people oversell what they're talking about it.

    • chrisldgk 3 hours ago
      I think the point is that you can write your code using ES6 and ES7 and the TypeScript compiler allows you to output ES6 or ES5 compatible code if you want to make sure it runs in older browsers as well. You can do that with non-TypeScript ES code as well but you’re bound to use another transpiler. With TypeScript you get it „for free“ since you need to compile your code either way.
      • embedding-shape 1 hour ago
        Ah yeah, kind of like how I get a drink for free if I get the hamburger menu, even if it costs more? Kind of weird perspective, but I can accept that it's something zealots tell themselves so "we're doing it differently" actually computes for them.