Using TypeScript can provide many benefits, such as reducing bugs or self-documenting codebase.
But it can also cause dilemmas, such as whether to allow TypeScript to infer types or to explicitly annotate the static type, as in other programming languages.