5.5 āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻĄā§āĻā§āĻ°ā§āĻāĻ°ā§āĻ¸Â
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻāĻŋ āĻāĻāĻž āĻāĻāĻā§ āĻĻā§āĻ°ā§āĻ¤Â āĻ°āĻŋāĻāĻŋāĻ āĻāĻ°ā§ āĻ¨ā§āĻāĨ¤ āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻšāĻā§āĻā§ āĻŦāĻŋāĻļā§āĻˇ āĻŽā§āĻĨāĻĄ āĻ¯āĻžÂ āĻā§āĻ˛āĻžāĻ¸āĻā§ āĻ¸āĻāĻā§āĻāĻžā§āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻ° āĻā§āĻ˛āĻžāĻ¸Â āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ¨āĻā§āĻ°ā§āĻ˛ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšā§āĨ¤ āĻāĻžāĻāĻĒāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻĻā§āĻāĻāĻž āĻāĻā§āĻ¸ā§āĻ¸āĻ¸āĻ° āĻŽā§āĻĨāĻĄ āĻāĻā§ āĻ¯āĻž āĻšāĻ˛ āĻ¸ā§āĻāĻžāĻ° (Setter) āĻāĻ° āĻā§āĻāĻžāĻ° (Getter) āĻ¯āĻž āĻĻāĻŋā§ā§ āĻāĻŽāĻ°āĻž āĻā§āĻ˛āĻžāĻ¸āĻā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ° āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤Â
āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻĄāĻŋāĻā§āĻ˛āĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻ āĻŋāĻ āĻāĻā§ āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻĄā§āĻā§āĻ°ā§āĻāĻ°āĻ¸ āĻĄāĻŋāĻā§āĻ˛ā§ā§āĻžāĻ° āĻāĻ°āĻž āĻšā§āĨ¤
āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻĄā§āĻā§āĻ°ā§āĻāĻ°, āĻŽā§āĻĨāĻĄ āĻĄā§āĻā§āĻ°ā§āĻāĻ°ā§āĻ°Â āĻŽāĻ¤āĻ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻāĻžāĻ° (Setter) āĻāĻ° āĻā§āĻāĻžāĻ° (Getter) āĻŽā§āĻĨāĻĄā§āĻ° āĻ¯ā§āĻā§āĻ¨ā§ āĻāĻāĻāĻžā§ āĻĒā§āĻ°ā§ā§āĻ āĻāĻ°āĻž āĻšā§āĨ¤ āĻāĻāĻāĻž āĻ¸āĻŋāĻā§āĻā§āĻ˛ āĻŽā§āĻŽā§āĻŦāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĻā§āĻāĻāĻž āĻĄā§āĻā§āĻ°ā§āĻāĻ° āĻāĻŽāĻ°āĻžÂ āĻāĻāĻ¸āĻžāĻĨā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°Â āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦ āĻ¨āĻž āĨ¤ āĻŦāĻ°āĻ, āĻŽā§āĻŽā§āĻŦāĻžāĻ°āĻāĻŋāĻ° āĻ¸āĻŦ āĻĄā§āĻā§āĻ°ā§āĻāĻ°āĻā§āĻ˛ā§ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻ āĻ āĻ°ā§āĻĄāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻā§āĻ¸ā§āĻ¸āĻ°ā§Â āĻĒā§āĻ°ā§ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤Â
āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻĄā§āĻā§āĻ°ā§āĻāĻ°ā§āĻ° āĻāĻā§āĻ¸āĻĒā§āĻ°ā§āĻļāĻ¨āĻāĻŋ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻšāĻŋāĻ¸ā§āĻŦā§ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽā§ āĻāĻ˛ āĻšā§ āĻāĻŦāĻ āĻāĻ¤ā§ āĻ¤āĻŋāĻ¨āĻāĻž āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻĨāĻžāĻāĻŦā§āĨ¤
ā§§āĨ¤Â target: āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻŽā§āĻŦāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻā§āĻ˛āĻžāĻ¸āĻāĻŋāĻ° āĻāĻ¨ā§āĻ¸āĻā§āĻ°āĻžāĻāĻāĻ° āĻĢāĻžāĻāĻļāĻ¨ āĻ āĻĨāĻŦāĻž āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻŽā§āĻŽā§āĻŦāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻā§āĻ˛āĻžāĻ¸āĻāĻŋāĻ° āĻĒā§āĻ°āĻā§āĻāĻžāĻāĻĒÂ
ā§¨āĨ¤ propertyKey: āĻŽā§āĻŽā§āĻŦāĻžāĻ°āĻāĻŋāĻ° āĻ¨āĻžāĻŽ
ā§ŠāĨ¤ descriptor: āĻŽā§āĻŽā§āĻŦāĻžāĻ°āĻāĻŋāĻ° āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋ āĻĄā§āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻ°
āĻ¨ā§āĻ – āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ°ā§āĻā§āĻ ES5 – āĻāĻ° āĻ¨āĻŋāĻā§ āĻšā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋ āĻĄā§āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻ° āĻāĻ¨āĻĄāĻŋāĻĢāĻžāĻāĻ¨āĻĄ āĻšāĻŦā§āĨ¤
āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻĄā§āĻā§āĻ°ā§āĻāĻ° āĻ¯āĻĻāĻŋ āĻā§āĻ¨ā§ āĻā§āĻ¯āĻžāĻ˛ā§ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§, āĻ¸ā§āĻāĻž āĻŽā§āĻŽā§āĻŦāĻžāĻ°āĻāĻŋāĻ° āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋ āĻĄā§āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻ°Â āĻšāĻŋāĻ¸ā§āĻŦā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻŦā§āĨ¤
āĻ¨ā§āĻ – āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻžāĻ°ā§āĻā§āĻ ES5 āĻāĻ° āĻ¨āĻŋāĻā§ āĻšā§, āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻā§āĻ¯āĻžāĻ˛ā§āĻāĻŋ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻ¨āĻŋāĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻā§āĻĄāĻāĻŋ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°āĻŋ –
class Point {
private _x: number;
private _y: number;
constructor(x: number, y: number) {
this._x = x;
this._y = y;
}
@readonly
get x() {
return this._x;
}
@readonly
get y() {
return this._y;
}
}
function readonly(target: any, propertyKey: string) {
const descriptor: PropertyDescriptor = {
writable: false,
};
Object.defineProperty(target, propertyKey, descriptor);
}
const point = new Point(4, 5);
console.log(point.x); // Output: 4
point.x = 5; // This will throw an error
āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻĄā§āĻā§āĻ°ā§āĻāĻ° @readonly Point āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻŽā§āĻŽā§āĻŦāĻžāĻ°ā§āĻ° āĻāĻĒāĻ° āĻĒā§āĻ°ā§ā§āĻ āĻāĻ°āĻž āĻšā§ā§āĻā§ āĻ¯āĻžÂ āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋāĻā§ āĻ°āĻŋāĻĄ-āĻ āĻ¨āĻ˛āĻŋ āĻāĻ°ā§ āĻĻāĻŋāĻā§āĻā§āĨ¤ āĻĄā§āĻā§āĻ°ā§āĻāĻ°āĻāĻŋ āĻ¯āĻāĻ¨ āĻāĻā§āĻ¸ā§āĻ¸āĻ° āĻā§āĻāĻžāĻ° (Getter) – āĻ āĻĒā§āĻ°ā§ā§āĻ āĻāĻ°āĻž āĻšāĻ˛, āĻāĻāĻž āĻĒā§āĻ°ā§āĻĒāĻžāĻ°ā§āĻāĻŋ āĻĄā§āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻ°āĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§ āĻ¨āĻ¨-āĻ°āĻžāĻāĻā§āĻŦāĻ˛ āĻāĻ°ā§ āĻĻāĻŋāĻ˛āĨ¤