Type Assertion
"đ§ āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ (Type Assertion): āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰāĻā§ āĻŦāĻŋāĻļā§āĻŦāĻžāϏ āύāĻž, āĻĻāĻŋāĻāύāĻŋāϰā§āĻĻā§āĻļ āĻĻāĻŋāύ!"
By Tanvir Ahmed
May 7th, 2025
âī¸ āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻŦāĻŋāĻŦāϰāĻŖ
āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻā§āĻļāϞ, āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰāĻā§ āύāĻŋāĻ āĻšāĻžāϤ⧠āĻŦāϞ⧠āĻĻā§āύ:
âāĻāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻāĻŋ āĻāϏāϞ⧠āĻā§āύ āĻāĻžāĻāĻĒā§āϰ, āĻāĻŽāĻŋ āĻāĻžāύāĻŋāĨ¤ āϤā§āĻŽāĻŋ āϏā§āĻāĻžāĻ āϧāϰ⧠āύāĻžāĻāĨ¤â
āĻāĻāĻŋ TypeScript-āϏāĻš āĻāĻŋāĻā§ āϏā§āĻā§āϝāĻžāĻāĻŋāĻāĻžāϞāĻŋ āĻāĻžāĻāĻĒāĻĄ āĻāĻžāώāĻžā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤ āĻāĻāĻŋ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻā§ āĻāϰāĻ āĻŦā§āĻļāĻŋ āύāĻŋā§āύā§āϤā§āϰāĻŖ āĻĻā§ā§, āϤāĻŦā§ āĻā§āϞāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āϏāĻŽāϏā§āϝāĻž āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
đ āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
āϧāϰā§āύ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ API āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻĄā§āĻāĻž āĻĒāĻžāĻā§āĻā§āύ āϝāĻžāϰ āĻāĻžāĻāĻĒ āĻ āĻŋāĻāĻāĻžāĻŦā§ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āϝāĻžāĻā§āĻā§ āύāĻžāĨ¤ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻāĻžāύ⧠āύāĻž āϏā§āĻāĻž āĻā§ â āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āĻāĻžāύā§āύāĨ¤ āϤāĻāύ āĻāĻĒāύāĻŋ āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
â āĻāĻĻāĻžāĻšāϰāĻŖ:
let data: any = "Hello TypeScript";
let length = (data as string).length;
console.log(length); // 16
Tip: JSX (React)-āĻ <string> āϏā§āĻāĻžāĻāϞ āύāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠as string āϏā§āĻāĻžāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
đ ī¸ āĻāĻāύ āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
âī¸ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻāύ:
- āĻāĻĒāύāĻŋ āĻāĻžāύā§āύ āĻāĻāĻāĻŋ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻā§āύ āĻāĻžāĻāĻĒā§āϰ āĻšāĻŦā§āĨ¤
- āĻāĻĒāύāĻŋ āĻā§āύ⧠API āĻĨā§āĻā§ any āĻŦāĻž unknown āĻāĻžāĻāĻĒā§āϰ āĻĄā§āĻāĻž āĻĒāĻžāĻā§āĻā§āύāĨ¤
- āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āϝā§āĻāĻžāύ⧠āĻāύāĻĢāĻŋāĻāĻāĻĄ, āϏā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āύāĻŋāĻā§ āĻāĻžāĻāĻĒ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻāĻžāύāĨ¤
â āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ āύāĻž āϝāĻāύ:
- āĻāĻĒāύāĻŋ āĻĄā§āĻāĻžāϰ āĻāĻžāĻāĻĒ āύāĻŋāĻļā§āĻāĻŋāϤ āύāύāĨ¤
- āĻĄā§āĻāĻž runtime-āĻ āĻŦāĻŋāĻāĻŋāύā§āύ āϰāĻāĻŽ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻĻāĻŋā§ā§ āĻā§āϞ āĻāĻžāĻāĻĒ āϧāϰāϞ⧠āĻā§āĻĄ āĻā§āĻā§ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
đ§Ē āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏ āĻĒā§āϰāĻŦāϞā§āĻŽ
āĻĒā§āϰāĻļā§āύ:
āĻāĻĒāύāĻŋ āύāĻŋāĻā§āϰ JSON āĻĄā§āĻāĻž āĻĒāĻžāĻā§āĻā§āύ:
let response: any = '{"name": "Anika", "age": 22}';
āĻāĻĒāύāĻžāϰ āĻāĻžāĻ:
- JSON āĻĒāĻžāϰā§āϏ āĻāϰā§āύāĨ¤
- āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠name āĻāĻŦāĻ age āĻŦā§āϰ āĻāϰā§āύāĨ¤
- name āĻā§ āĻŦā§ āĻšāĻžāϤā§āϰ āĻ āĻā§āώāϰ⧠āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§āύāĨ¤
- age āĻāϰ āϏāĻžāĻĨā§ ā§Ž āϝā§āĻ āĻāϰ⧠āĻĒā§āϰāĻŋāύā§āĻ āĻāϰā§āύāĨ¤
â āϏāĻŽāĻžāϧāĻžāύ:
let response: any = '{"name": "Anika", "age": 22}';
let parsed = JSON.parse(response);
let user = parsed as { name: string, age: number };
console.log(user.name.toUpperCase()); // ANIKA
console.log(user.age + 8); // 30
đŧ āĻāύā§āĻāĻžāϰāĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻ āĻāϤā§āϤāϰ
ā§§. āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻā§?
āĻāϤā§āϤāϰ: āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻšāϞ⧠āĻāĻāĻāĻŋ āĻāĻĒāĻžā§ āϝā§āĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰāĻā§ āύāĻŋāϰā§āĻĻā§āĻļ āĻĻā§āύ āĻā§āύ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻā§ āĻāĻžāĻāĻĒā§āϰ āĻšāĻŦā§āĨ¤ āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ compile time-āĻ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤
⧍. āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻāϰ āĻāĻžāĻāĻĒ āĻāĻžāϏā§āĻāĻŋāĻ āĻāĻŋ āĻāĻāĻ āĻāĻŋāύāĻŋāϏ?
āĻāϤā§āϤāϰ: āύāĻž, āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ TypeScript-āĻāϰ compile time āĻĒāϰā§āϝāĻžā§ā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšā§āĨ¤ āĻāĻžāĻāĻĒ āĻāĻžāϏā§āĻāĻŋāĻ runtime-āĻ āĻāϏāϞ āĻāĻžāĻāĻĒ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰ⧠(āϝā§āĻŽāύ C āĻŦāĻž Java āϤ⧠āĻšā§)āĨ¤
as āĻāĻŦāĻ <type> â āĻā§āύ āϏā§āĻāĻžāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ?
ā§Š.āĻāϤā§āϤāϰ: as āϏā§āĻāĻžāĻāϞ āϏāĻŦāĻā§ā§ā§ āύāĻŋāϰāĻžāĻĒāĻĻ āĻāĻŦāĻ āĻāϧā§āύāĻŋāĻāĨ¤ JSX (React) āĻā§āĻĄā§ <type> āϏā§āĻāĻžāĻāϞ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϤāĻžāĻ as āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāĻ āĻāϤā§āϤāĻŽāĨ¤
ā§Ē. āĻā§āϞ āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰā§āĻ āĻāϰāϞ⧠āĻā§ āĻšāϤ⧠āĻĒāĻžāϰā§?
āĻāϤā§āϤāϰ: āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻā§āύ⧠āĻāϰāϰ āύāĻž āĻĻā§āĻāĻžāϞā§āĻ āĻā§āĻĄ runtime-āĻ āĻā§āĻā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āϤāĻžāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽā§ āϏāĻžāĻŦāϧāĻžāύāϤāĻž āĻāϰā§āϰāĻŋāĨ¤
let value: any = 123;
let str = value as string;
console.log(str.toUpperCase()); // â Error at runtime
unknown āĻāĻžāĻāĻĒā§ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āϏā§āĻŦāĻŋāϧāĻž āĻā§?
ā§Ģ.āĻāϤā§āϤāϰ: unknown āĻāĻžāĻāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻāĻžāĻāĻĒ āĻā§āĻ āύāĻž āĻāϰ⧠āϏāϰāĻžāϏāϰāĻŋ āĻā§āύ⧠āĻ āĻĒāĻžāϰā§āĻļāύ āĻāϰāĻž āϝāĻžā§ āύāĻž, āϤāĻžāĻ āĻāĻāĻŋ any āĻāϰ āĻā§ā§ā§ āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤ āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āύāĻŋāĻļā§āĻāĻŋāϤāĻāĻžāĻŦā§ āĻāĻžāĻāĻĒ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāĻž āϝāĻžā§āĨ¤
let input: unknown = "hello";
let str = input as string;
console.log(str.toUpperCase()); // HELLO
đ āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻāĻžāĻāĻĒ āĻ ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻāĻŽāύ āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻā§āϞ, āϝāĻž āĻĻāĻŋā§ā§ āϤāĻžāϰāĻž āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰāĻā§ āĻŦā§āĻāĻŋā§ā§ āĻĻāĻŋāϤ⧠āĻĒāĻžāϰā§āύ â "āĻāĻŽāĻŋ āĻāĻžāύāĻŋ āĻāĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻāĻŋ āĻā§āύ āĻāĻžāĻāĻĒā§āϰāĨ¤"
āϤāĻŦā§ āĻāĻāĻŋ āĻā§āĻāĻ āύāĻž āύāĻŋā§ā§ āύāĻž āĻŦā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠āĻŦāĻŋāĻĒāĻĻāĻ āĻĄā§āĻā§ āĻāύāϤ⧠āĻĒāĻžāϰā§āĨ¤
āϤāĻžāĻ āϏāϰā§āĻŦāĻĻāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻšā§ā§, āύāĻŋāϰāĻžāĻĒāĻĻāĻāĻžāĻŦā§ āĻāĻžāĻāĻĒ āĻ
ā§āϝāĻžāϏāĻžāϰāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤