Generic Types
"đ§ āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ (Generic Types): āĻāĻžāĻāĻĒ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻŦāĻāĻžā§ āϰā§āĻā§ āĻā§āĻĄā§āϰ āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝāϤāĻž!"
By Tanvir Ahmed
May 7th, 2025
âī¸ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻŦāϰāĻŖ
āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻā§āĻļāϞ āϝāĻž TypeScript-āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻžāĻāĻĒāĻā§ āĻāϰ⧠āĻĢā§āϞā§āĻā§āϏāĻŋāĻŦāϞ āĻāĻŦāĻ āĻĒā§āύāϰāĻžā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻāϰ⧠āϤā§āϞā§āĨ¤ āĻāĻāĻŋ āĻāĻžāĻāĻĒāĻā§ āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻāĻāĻžāĻŦā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻžāϰ āϏā§āϝā§āĻ āĻĻā§ā§, āϝāĻžāϰ āĻĢāϞ⧠āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏ āĻāĻāĻžāϧāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϏāĻšāĻ āĻāĻžāώāĻžāϝāĻŧ, āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŽāϰāĻž āĻāĻžāĻāĻĒ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝāϤāĻž āĻāύāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤
đ āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻāĻĒāύāĻŋ āĻāĻžāĻāĻĒ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāĻāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻžāĻāĻāĻĄ āĻāĻžāĻāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻ āĻāĻžāĻāĻĒāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦā§ āĻāϞāĻŽāĻžāύ āĻā§āĻĄā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻžāĻāĻĒ āĻĻāĻŋā§ā§ āĻĒā§āϰā§āĻŖ āĻšā§āĨ¤
āϧāϰā§āύ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āϤā§āϰāĻŋ āĻāϰāĻā§āύ āϝāĻž āĻĻā§āĻāĻŋ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āύā§āĻŦā§ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āϝā§āĻāĻĢāϞ āĻĢāĻŋāϰāĻŋāϝāĻŧā§ āĻĻā§āĻŦā§āĨ¤ āĻāĻŋāύā§āϤ⧠āϏā§āĻ āĻĻā§āĻāĻŋ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āϝā§āĻā§āύ⧠āĻāĻžāĻāĻĒā§āϰ āĻšāϤ⧠āĻĒāĻžāϰā§, āϝā§āĻŽāύ āϏāĻāĻā§āϝāĻž āĻŦāĻž āϏā§āĻā§āϰāĻŋāĻāĨ¤ āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāĻĒāύāĻŋ āĻāĻ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāϰāĻ āĻĢā§āϞā§āĻā§āϏāĻŋāĻŦāϞ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύāĨ¤
â āĻāĻĻāĻžāĻšāϰāĻŖ:
function identity<T>(arg: T): T {
return arg;
}
let result1 = identity(5); // result1 āĻāϰ āĻāĻžāĻāĻĒ āĻšāĻŦā§ number
let result2 = identity("Hello"); // result2 āĻāϰ āĻāĻžāĻāĻĒ āĻšāĻŦā§ string
Tip: T āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϝāĻž āĻĒā§āϰā§āĻā§āϰāĻžāĻŽ āϰāĻžāύāĻāĻžāĻāĻŽā§ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻžāĻāĻĒā§ āĻĒā§āϰā§āĻŖ āĻšāĻŦā§āĨ¤
đ ī¸ āĻāĻāύ āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
âī¸ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻāύ:
- āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏ āϝā§āĻā§āύ⧠āĻāĻžāĻāĻĒā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻāĻĒāύāĻŋ āĻāĻžāĻāĻĒā§āϰ āϧāϰāύ āĻāĻžāύā§āύ āύāĻž, āϤāĻŦā§ āύāĻŋāĻļā§āĻāĻŋāϤ āϝ⧠āĻāĻāĻ āϧāϰāύā§āϰ āĻĄā§āĻāĻžāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻŦā§āύã
- āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻžāύāĨ¤
â āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ āύāĻž āϝāĻāύ:
- āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāĻžāĻāĻĒā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§ã
- āĻā§āĻĄā§ āĻ āϤā§āϝāϧāĻŋāĻ āĻāĻāĻŋāϞāϤāĻž āĻāύāϤ⧠āĻāĻžāĻā§āĻā§āύ, āϝā§āĻāĻžāύ⧠āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āĻĒā§āϰā§ā§āĻāύ āύā§āĻāĨ¤
đ§Ē āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ āĻĒā§āϰāĻŦāϞā§āĻŽ
āĻĒā§āϰāĻļā§āύ:
āĻāĻĒāύāĻžāϰ āĻāĻžāĻ:
- āĻāĻāĻāĻŋ āĻā§āύā§āϰāĻŋāĻ āĻĢāĻžāĻāĻļāύ āϤā§āϰāĻŋ āĻāϰā§āύ āϝāĻž āĻĻā§āĻāĻŋ āĻā§āϝāĻžāϞā§āϰ āϤā§āϞāύāĻž āĻāϰāĻŦā§ āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋ āϏāĻŽāĻžāύ āĻāĻŋāύāĻž āϤāĻž āĻāĻžāύāĻžāĻŦā§āĨ¤
- āĻāĻ āĻĢāĻžāĻāĻļāύāĻāĻŋ āϏāĻāĻā§āϝāĻžāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āϏā§āĻā§āϰāĻŋāĻāĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
â āϏāĻŽāĻžāϧāĻžāύ:
function isEqual<T>(a: T, b: T): boolean {
return a === b;
}
let result1 = isEqual(10, 10); // true
let result2 = isEqual("hello", "world"); // false
đŧ āĻāύā§āĻāĻžāϰāĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻ āĻāϤā§āϤāϰ
ā§§. āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻā§?
āĻāϤā§āϤāϰ: āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻšāϞ⧠āĻāĻāĻāĻŋ āĻā§āĻļāϞ āϝāĻž āĻāĻžāĻāĻĒ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻĢā§āϞā§āĻā§āϏāĻŋāĻŦāĻŋāϞāĻŋāĻāĻŋ āĻāύ⧠āĻāĻŦāĻ āĻā§āĻĄāĻā§ āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻāϰ⧠āϤā§āϞā§āĨ¤
⧍. āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻāĻŋāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
āĻāϤā§āϤāϰ: āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻžāĻāĻĒ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšā§, āϝā§āĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏā§āϰ āĻāĻŋāϤāϰ⧠āϝ⧠āĻā§āύ āĻāĻžāĻāĻĒā§āϰ āĻāύā§āϝ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāĻŦā§āĨ¤
ā§Š. āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒā§āϰ āϏā§āĻŦāĻŋāϧāĻž āĻā§?
āĻāϤā§āϤāϰ: āĻāĻāĻŋ āĻā§āĻĄā§āϰ āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝāϤāĻž āĻŦā§āĻĻā§āϧāĻŋ āĻāϰ⧠āĻāĻŦāĻ āĻāĻžāĻāĻĒ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§, āϝ⧠āĻāĻžāϰāĻŖā§ āĻā§āĻĄā§āϰ āĻŦāĻžāĻ āĻāĻŽ āĻšā§āĨ¤
đ āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻā§āύā§āϰāĻŋāĻ āĻāĻžāĻāĻĒ TypeScript-āĻ āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻā§āĻļāϞ āϝāĻž āĻā§āĻĄā§āϰ āĻĒā§āύāĻāĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝāϤāĻž āĻāĻŦāĻ āĻĢā§āϞā§āĻā§āϏāĻŋāĻŦāĻŋāϞāĻŋāĻāĻŋ āĻŦā§āĻĻā§āϧāĻŋ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāĻžāĻāĻĒ āϏāĻŋāϏā§āĻā§āĻŽā§ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻāϏ⧠āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻā§āĻĄā§āϰ āĻŽāĻžāύ āĻŦā§āĻĻā§āϧāĻŋ āĻĒāĻžā§āĨ¤