C# is a strongly-typed language, and moving from that ecosystem into a weakly-typed language makes most developers skin crawl. The main 'benefits' that people point to when talking about TypeScript is the typing it provides, and the interface declarations that explicitly declare how an object is constructed. It is claimed that these advantages make it easier for developers to collaborate on large projects.
That all may be true. But for me, the advantages of TypeScript do not outweigh the disadvantages. Here are the costs associated with TypeScript, as I see them:
- It requires significant amount of setup for each new project, creating a typings files and adding interface declarations for each object. It takes much longer to get proficient at this kind of setup than simply learning how TypeScript 'works'.
- TypeScript is a compiled language, like Babel. Every time a developer hits
npm test, there is a delay while the computer compiles the code before running the command. This time lag can be quite significant when quickly iterating through code, like when writing unit tests.
These are my opinions and experiences with TypeScript. I'm sure there is whole army of developers who would be happy to debate these points with me. That's fine. Use what you want, I'll do the same.
The result is that I use TypeScript because I have to. I use it because someone is paying me to use it. When creating my own apps, I avoid it for the same reasons I avoid Babel. The downsides of using compiled languages is often not directly experienced, but only experienced inderectly, in the form of poorer developer experience, complexity, and issues with reliability and scaling. These are hard-won lessons of experience that are difficult to communicate to developers busy chasing the new, hottest technology.
Major features of this fork:
- Semantic Release for continuous delivery using semantic versioning.
- Greenkeeper automatic dependency management for automatically maintaining the latest, most secure dependencies.
- IPFS uploads of all files and dependencies, to backup dependencies in case they are ever inaccessible from GitHub or npm.
Since npm and GitHub occasionally fall over or people occasionally rage-quit the platforms and take their code with them, I am additionally publishing the code to IPFS. Here is the code behind the initial release (v7.0.0) of my fork:
- without node_modules folder: QmNjFsiTZRMAUa9rZpXqZqivv9JLaNicwLSPHjyLB7PVDk (1 MB)
- with node_modules folder: Qma9ScApwBtuL7dpdSk7jpBFTxbqRdiR921WjyP75SU7bT (100 MB)