Get an estimate
Michał
2023/08/10
TypeScript is the superset of JavaScript language, which gains more and more popularity in the frontend world. Its main purpose is to increase security and performance in project, by implementing static typing. In this article, I will present you a practical guide for frontend developers, who would like to know the advantages of TypeScript and understand, which problems it can solve in a traditional JavaScript code.
TypeScript is an open-source programming language, created by Microsoft. It is a superset of JavaScript language, which means that is fully compatible with the JavaScript code, but it adds static typing to it. This means that you can declare the types of variables, arguments of functions, as well as define interfaces and classes.
a) Security
- Thanks to static typing, TypeScript detects errors related to data types during compilation, which helps to avoid many problems that could occur during program execution.
b) Performance
- Type checking during compilation allows to optimise code, which can result in better application performance.
c) Better teamwork
- Publicly declared types in the code simplify communication between team members, especially in larger projects.
d) Better documentation
- Types act as documentation for the code, making it easier to understand what data is required and returned by functions and methods.
a) Working with JavaScript ecosystem
Even if you are starting a project from scratch, using TypeScript does not mean giving up popular JavaScript libraries and frameworks such as React, Vue or Angular. On the contrary, many of them already have support for TypeScript, allowing you to take full advantage of its benefits across the frontend ecosystem.
a) Declaring the types of variables and functions
Examples of type declarations of basic data types such as string, number, boolean, as well as custom types.
const age: number = 30;const name: string = "John";const isStudent: boolean = true;
const person: ( name: string; age: number ) = { name: "John", age: 30,};
const numbers: number[] = [1, 2, 3];const names: string[] = ["John", "Alice", "Pauline"];const tupleArray: [string, number, boolean, object] = ['string', 0, true, {}];
const addNumbers = (a: number, b: number): number => a + b;
b) Interfaces
Interfaces in TypeScript are a tool which allows us to definr the structure of objects. We can specify what features should be in an object and what data types it should have. Interfaces provide us with a consistent way of specifying which data should be available in different parts of our code.
Interface User { userName: string age: number;}
a) Avoiding errors related to data types
Detecting errors when passing arguments to functions
const multiply = (a: number, b: number): number => { return a * b;};const result = multiply(5, "seven"); // Błąd! Drugi argument powinien być liczbą
interface Person { name: age: number;}const person: Person = { name: "John", // Błąd! Brakuje właściwości "age"};
Avoiding errors related to the indexing of arrays and objects:
const numbers: number[] = [1, 2, 3];console.log(numbers[3]); // Błąd! Tablica ma tylko indeksy 0, 1 i 2const user: ( name: string; age: number ) = { name: "John", age: 30,};console.log(user.email); // Błąd! Właściwość "email" nie istnieje w obiekcie "user"
b) Intelligent editor suport
Modern IDEs (Integrated Development Environments) offer extensive support for TypeScript, making it easier to write code through prompts, word completion, documentation browsing and other tools.
c) Improved refactoring
- Increase security by detecting typing errors during compilation.
- Making it easier to find and fix problems in code with precise error messages.
- Improved code readability and documentation through more formal descriptions of variables and functions.
- Efficient management of large projects with IDE support for refactoring and static analysis.