578
1. Installation and Setup
Install TypeScript (Globally):
npm install -g typescript
Check Version:
tsc -v
Initialize TypeScript Project (Creates tsconfig.json):
tsc --init
2. Compile TypeScript to JavaScript
tsc index.ts
- Compiles index.ts to index.js.
- Watch Mode (Auto-compile on save):
tsc --watch
3. Basic TypeScript Example
index.ts
function greet(name: string): string {
return `Hello, ${name}`;
}
console.log(greet("Alice"));
Compile and Run:
tsc index.ts node index.js
4. Types in TypeScript
1. Primitive Types:
let isDone: boolean = true; let age: number = 25; let firstName: string = "John"; let u: undefined = undefined; let n: null = null;
2. Arrays:
let numbers: number[] = [1, 2, 3]; let fruits: Array<string> = ["Apple", "Banana"];
3. Tuples (Fixed-Length Array):
let person: [string, number] = ["Alice", 30];
4. Enums:
enum Direction {
Up,
Down,
Left,
Right
}
let dir: Direction = Direction.Up;
5. Any (Avoid if Possible):
let randomValue: any = 10; randomValue = "String"; // No Error
5. Functions in TypeScript
1. Basic Function:
function add(a: number, b: number): number {
return a + b;
}
2. Optional Parameters:
function multiply(a: number, b?: number): number {
return b ? a * b : a;
}
3. Default Parameters:
function greet(name: string = "Guest"): string {
return `Hello, ${name}`;
}
4. Rest Parameters:
function sum(...numbers: number[]): number {
return numbers.reduce((acc, n) => acc + n, 0);
}
6. Interfaces
interface User {
id: number;
name: string;
email?: string; // Optional Property
}
const user: User = {
id: 1,
name: "John Doe"
};
7. Classes
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}`);
}
}
const person1 = new Person("Alice", 28);
person1.greet();
8. Access Modifiers
class Employee {
public name: string;
private salary: number;
protected position: string;
constructor(name: string, salary: number, position: string) {
this.name = name;
this.salary = salary;
this.position = position;
}
}
- public – Accessible from anywhere.
- private – Accessible only within the class.
- protected – Accessible within the class and subclasses.
9. Inheritance and Extending Classes
class Animal {
makeSound() {
console.log("Animal sound");
}
}
class Dog extends Animal {
makeSound() {
console.log("Bark");
}
}
const dog = new Dog();
dog.makeSound(); // Output: Bark
10. Type Assertions (Type Casting)
let value: any = "Hello World"; let strLength: number = (value as string).length;
11. Generics
function identity<T>(arg: T): T {
return arg;
}
let output1 = identity<string>("Hello");
let output2 = identity<number>(42);
12. Utility Types
interface User {
id: number;
name: string;
email: string;
}
// Partial – Makes all properties optional
let userUpdate: Partial<User> = { name: "Bob" };
// Readonly – Prevents modification
const user1: Readonly<User> = { id: 1, name: "Alice", email: "alice@email.com" };
13. Union and Intersection Types
1. Union Type:
let id: number | string; id = 101; id = "A101";
2. Intersection Type:
interface ErrorHandling {
success: boolean;
error?: { message: string };
}
interface Data {
data: string[];
}
type ApiResponse = ErrorHandling & Data;
14. Type Guards
function isNumber(x: any): x is number {
return typeof x === "number";
}
function printValue(value: number | string) {
if (isNumber(value)) {
console.log(value.toFixed(2)); // Number
} else {
console.log(value.toUpperCase()); // String
}
}
15. Async/Await and Promises
async function fetchData(): Promise<string> {
return new Promise((resolve) => {
setTimeout(() => resolve("Data loaded"), 2000);
});
}
fetchData().then((data) => console.log(data));
16. Working with Modules
Export Module:
export function add(a: number, b: number): number {
return a + b;
}
Import Module:
import { add } from './math';
console.log(add(5, 10));
17. Common TypeScript Commands
tsc --init # Initialize TypeScript Project tsc # Compile all .ts files tsc app.ts # Compile a single file tsc --watch # Watch for changes
18. tsconfig.json (Key Settings)
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true,
"outDir": "./dist",
"esModuleInterop": true
}
}
