Interface
"đ āĻāĻžāĻāĻĒāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏ (Interface): āĻāĻ āύ āĻāϰā§āύ āĻāĻĒāύāĻžāϰ āĻāĻžāĻāĻĒāĻā§"
By Tanvir Ahmed
May 7th, 2025
âī¸ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻŦāϰāĻŖ
āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻšāϞ⧠āĻāĻžāĻāĻĒāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻĢāĻŋāĻāĻžāϰ, āϝāĻž āĻĻāĻŋā§ā§ āĻāĻĒāύāĻŋ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻāĻ āύ (structure) āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻ āϰā§āĻĨāĻžā§, āĻā§ āĻā§ āĻĒā§āϰāĻĒāĻžāϰā§āĻāĻŋ āĻĨāĻžāĻāĻŦā§, āϏā§āĻā§āϞā§āϰ āĻāĻžāĻāĻĒ āĻā§ āĻšāĻŦā§ â āϏāĻŦāĻāĻŋāĻā§ āĻāĻā§ āĻĨā§āĻā§āĻ āĻ āĻŋāĻ āĻāϰ⧠āĻĻā§āĻā§āĻž āϝāĻžā§āĨ¤
āĻāĻ āĻĢāĻŋāĻāĻžāϰ āĻā§āĻĄāĻā§ āĻāϰāĻ āϏā§āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻ āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝ āĻāϰ⧠āϤā§āϞā§āĨ¤
đ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻĒāύāĻŋ āĻŦāϞāϤ⧠āĻĒāĻžāϰā§āύ,
âāĻāĻŽāĻŋ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻ
āĻŦāĻā§āĻā§āĻ āĻāĻžāĻ āϝāĻžāϤ⧠name āĻšāĻŦā§ string āĻāĻŦāĻ age āĻšāĻŦā§ numberāĨ¤â
â āĻāĻĻāĻžāĻšāϰāĻŖ:
interface Person {
name: string;
age: number;
}
let user: Person = {
name: "Rahim",
age: 30
};
āĻāĻāĻžāύ⧠Person āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦāϞ⧠āĻĻāĻŋāĻā§āĻā§, user āĻ āĻŦāĻā§āĻā§āĻā§ āĻ āĻŦāĻļā§āϝāĻ name āĻ age āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤
đ ī¸ āĻāĻāύ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
âī¸ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻāύ:
- āĻāĻĒāύāĻŋ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻāĻ āύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύāĨ¤
- āĻ āύā§āĻāĻā§āϞ⧠āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻāĻ āĻāĻ āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻŦā§āĨ¤
- āĻā§āϞāĻžāϏ āĻŦāĻž āĻĢāĻžāĻāĻļāύā§āϰ āĻāύāĻĒā§āĻ āĻŦāĻž āϰāĻŋāĻāĻžāϰā§āύ āĻāĻžāĻāĻĒ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύāĨ¤
â āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ āύāĻž āϝāĻāύ:
- āĻāĻĒāύāĻžāϰ āĻāĻžāĻāĻĒ āĻāĻāĻžāϧāĻŋāĻ āĻĢāϰā§āĻŽ āύāĻŋāϤ⧠āĻĒāĻžāϰ⧠(union type āĻšāϞ⧠āĻāĻĒāϝā§āĻā§āϤ āύā§)āĨ¤
- āĻāĻĒāύāĻžāϰ āĻ āĻŦāĻā§āĻā§āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ flexible āĻšāĻā§āĻž āĻĻāϰāĻāĻžāϰ (Record<string, any> āĻāĻžāĻāĻĒā§)āĨ¤
đ§Ē āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ āĻĒā§āϰāĻŦāϞā§āĻŽ
āĻĒā§āϰāĻļā§āύ:
āĻāĻāĻāĻŋ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦāĻžāύāĻžāύ āϝāĻžāϰ āύāĻžāĻŽ Student, āϝā§āĻāĻžāύ⧠āĻĨāĻžāĻāĻŦā§:
- name: string
- roll: number
- isPassed: boolean
āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āĻŦāĻžāύāĻžāύ āϝāĻž āĻāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŽā§āύ⧠āĻāϞ⧠āĻāĻŦāĻ āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§āύ name āĻ isPassed āĻŽāĻžāύāĨ¤
â āϏāĻŽāĻžāϧāĻžāύ:
interface Student {
name: string;
roll: number;
isPassed: boolean;
}
let s1: Student = {
name: "Sumaiya",
roll: 102,
isPassed: true
};
console.log(s1.name); // Sumaiya
console.log(s1.isPassed); // true
đŧ āĻāύā§āĻāĻžāϰāĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻ āĻāϤā§āϤāϰ
ā§§. āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻā§?
āĻāϤā§āϤāϰ: āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§, āϝāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠āĻāĻāĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻā§ āĻā§ āĻā§ āĻĒā§āϰāĻĒāĻžāϰā§āĻāĻŋ āĻĨāĻžāĻāĻŦā§ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āĻāĻžāĻāĻĒ āĻā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻāĻžāĻāĻĒ āĻā§āĻāĻŋāĻā§ā§āϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
⧍. āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻŦāĻ āĻāĻžāĻāĻĒ (type alias) āĻāϰ āĻŽāϧā§āϝ⧠āĻĒāĻžāϰā§āĻĨāĻā§āϝ āĻā§?
āĻāϤā§āϤāϰ:
- interface āĻā§āĻŦāϞ āĻ āĻŦāĻā§āĻā§āĻā§āϰ āĻāĻ āύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
- type āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻ āĻŦāĻā§āĻā§āĻ āĻāĻžā§āĻžāĻ union, intersection āĻāϤā§āϝāĻžāĻĻāĻŋ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āϝāĻžā§āĨ¤
- āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠extend āĻāϰāĻž āϏāĻšāĻ, āĻāĻžāĻāĻĒā§ āύā§āĨ¤
ā§Š. āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻŋ extend āĻāϰāĻž āϝāĻžā§?
āĻāϤā§āϤāϰ: āĻšā§āϝāĻžāĻ, āĻāĻāĻāĻŋ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻ āύā§āϝ āĻāύā§āĻāĻžāϰāĻĢā§āϏāĻā§ extend āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
interface Person {
name: string;
}
interface Employee extends Person {
salary: number;
}
let e: Employee = {
name: "Tania",
salary: 50000
};
ā§Ē. āĻāύā§āĻāĻžāϰāĻĢā§āϏ⧠āĻāĻā§āĻāĻŋāĻ (optional) āĻĒā§āϰāĻĒāĻžāϰā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻŦā§āύ?
āĻāϤā§āϤāϰ: āĻĒā§āϰāĻĒāĻžāϰā§āĻāĻŋāϰ āύāĻžāĻŽā§āϰ āĻĒāĻžāĻļā§ ? āĻĻāĻŋā§ā§ āĻāĻā§āĻāĻŋāĻ āĻāϰāĻž āϝāĻžā§āĨ¤
interface User {
name: string;
age?: number;
}
ā§Ģ. āĻĢāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§?
āĻāϤā§āϤāϰ: āĻšā§āϝāĻžāĻ, āĻĢāĻžāĻāĻļāύā§āϰ āĻāĻžāĻāĻĒ āϏāĻāĻā§āĻāĻžā§āύā§āϰ āĻāύā§āϝ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤
interface AddFn {
(a: number, b: number): number;
}
let add: AddFn = (x, y) => x + y;
đ āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻžāĻāĻĒāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āϰ āϏāĻŦāĻā§ā§ā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞā§āϰ āĻāĻāĻāĻŋāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āĻĄāĻā§ āĻāĻ āύāĻŦāĻĻā§āϧ, āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻ āύāĻŋāϰāĻžāĻĒāĻĻ āĻāϰ⧠āϤā§āϞā§āĨ¤
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŦā§ āĻĒā§āϰāĻā§āĻā§āĻā§ āĻāĻžāĻ āĻāϰā§āύ, āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻžā§āĻž āĻāĻā§āύ⧠āĻĒā§āϰāĻžā§ āĻ
āϏāĻŽā§āĻāĻŦāĨ¤
āϤāĻžāĻ āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻžāϞā§āĻāĻžāĻŦā§ āĻā§āϤā§āϤ āĻāϰāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋ TypeScript āĻĄā§āĻā§āϞāĻĒāĻžāϰā§āϰ āĻāύā§āϝ āĻ
āĻĒāϰāĻŋāĻšāĻžāϰā§āϝāĨ¤