JS does not specify data types.

TypeScript adds additional syntax to JavaScript to support a tighter integration with your editor. Catch errors early in your editor.

TypeScript code converts to JavaScript, which runs anywhere JavaScript runs: In a browser, on Node.js or Deno and in your apps.

TypeScript understands JavaScript and uses type inference to give you great tooling without additional code.

The 3 Primitive types are:

  1. number
  2. string
  3. boolean

There are two ways to specify type

  1. Implicit

    let val = 1 // TS automatically understands the type is number
    
  2. Explicit

    let val:number = 1
    

    Code -

//Array of String
let arr:string[];
arr.push("Pradeep")

//Array of Numbers
let rollnumbers: number[] = [1,2,3]

//Tuples
let studentDetails:[string,number,number] = ["pradeep",654,100]

//Adding types to function parameters and return type
function fun(a:number,b:number) : number{
	return a+b;
}

//Object Types
let student:{
	name:string,
	age:number,
	gender?:string | number
};
student = {
	name:"Pradeep",
	age:21
}

//INTERFACES
interface Person{
	name:string;
	age:number;
	gender?:number; //Gender is optional
}

interface Student{
	name:string;
	rollno:number;
	marks:number;
}

//Union
let NewStudent : Person | Student //can either be a Person or Student
NewStudent = {
	name:"Pradeep",
	age:21,
}

//Intersection
let NewStudent2 : Person & Student // must be both
NewStudent2 = {
	name : "Pradeep",
	age : 21,
	rollno: 650,
	marks : 100
}

//Classes in JS
class Car{
	brand
	constructor(brand)
	{
		this.brand = brand
	}
	function getBrand()
	{
			console.log(this.brand)
	}
}
let car1 = new Car("Audi")
car1.getBrand();

//Class in TS
class Car{
	brand;
	constructor(public brand:string)
	{
	}
}

// Implements
class Student implements Person
{
		constructor(public name:string,public age:number){}
}

Alias -

There are two types

  1. Interface