# 2. Use typescript to develop the plugin
Date: 2020-06-01
# Status
Accepted
# Context
Javascript, while being a very powerful language, gives room for human developer errors due to its loose static typing. A developer would need to continuously keep in their head the types and the types of the properties of the data structures they handle, to account for special handling of them when doing other calculations. As the codebase grows, this becomes increasingly difficult and less productive. While the IDE is helpful, it can only help up to a certain extend, which is again limitted by the loose static typing nature of the language.
Typescript, as a superset of Javascript and by now the default language in the most famous frontend frameworks (React, Angular), solves the above problems and greatly increases productivity by allowing the automation tooling to identify errors the developer would otherwise need to run the code to encounter them, but also allows for less code to write less code == less bugs, using its code generation ability.
# Decision
We will use Typescript to develop this plugin.
# Consequences
Understand that a compilation step is now included in the process. The target files would now be in the dist folder
Install the typescript compiler globally
npm install -g typescript
Generate a
tsconfig.json
filetsc --init
Adjust the options accordingly and ensure the highest level of strictness and error checking.
From now on use
*.ts
files for the source code (vanilla javascript is also supported in those files)Use the compiler to generate the target files. To build the files use:
tsc
or
npm run build
To watch the files for changes and automatically rebuild them use
tsc -w
or
npm run dev