TypeScript is a superset of JavaScript
- TypeScript adds additional syntax to JavaScript to support a tighter integration to the editor.
- Helps to catch errors early.
- TypeScript code converts to JavaScript, which runs anywhere JavaScript can run. (Browser, Node.js / Dino, and in our apps.)
Hence, TypeScript is highly trustable.
- TypeScript understands JavaScript and uses type inference to give us great tooling without additional code.
npm create vite@latest
npm install
npm run dev
- type project name or `.` for current folder.
- choose `react`
- choose `typescript`
npm install --save typescript @types/node @types/react @types/react-
dom @types/jest
let name = "Ansh Singh Sonkhia";
let name: string
let name: string = "Ansh Singh Sonkhia";
let name2: string;
//name2 = 5; //This will give error.
name2 = "Heyy Boss ;>"
let age: number;
let isFruit: boolean; // It can be TRUE or FALSE
let hobbies: string[]; // Array of string
let complex: number[]; // Array of number
let role: [number, string]; // Tuple - that can contain 1 number and 1 string.
role = [5, "lamba"];
type Person = {
name: string;
age: number;
sex?: string; // This property is optional.
}
// It's a good practice to keep the first letter of type ---> Capital
let person: Person = {
name: "Ansh",
age: 5,
};
// Assigning types in TypeScript
let lotsOfPersons: Person[];
- boolean
- string
- number
- Object
- array
- tuple
- undefined
- null
type Person = {
name: string;
age: number;
sex?: string; // This property is optional.
}
// Assigning types in TypeScript
let lotsOfPersons: Person[];
let contact: string | number;
contact = 3 // working
contact = "yfguyb" // working
// Method 1
function printName(name: string){
console.log(name);
};
// Method 2
let printName2: Function;
// better way --->
let printName3: (name: string) => void;
// It will take a string type input & will return void (nothing).
It is not recommended to use in projects.
let degree: any;
When you don't know the type it is going to be, it is recommended to use:
/* unknown type */
let degree1: unknown;
// never type
let kaka: (name: string) => never;
- type
type Person = {
name: string;
age?: number;
}
- interface
interface Personx {
name: string;
age?: number;
}
interface Personx {
name: string;
age?: number;
}
interface Guy extends Personx {
profession: string;
}
type X = {
a: string;
b?: number;
};
type Y = X & {
c: string;
d: number;
};
// Usage
let useXY: Y = {
a: "uydfgj",
c:"efdas",
d: 42
}
interface Magic {
name: string;
value?: number;
}
type Magician = Magic & {
power: string;
price: number;
}
type joker = {
from: string;
age: number;
}
interface Jadu extends joker {
name: string;
value?: number;
}