ਇਹ ਗੁਣ ਸੋਧਕ ਨਿਯੰਤਰਿਤ ਕਰਦੇ ਹਨ ਕਿ ਕੀ ਇੱਕ ਗੁਣ ਜ਼ਰੂਰੀ ਹੈ ਅਤੇ ਕੀ ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
ਚੋਣਵੀਂ (?)
ts
{
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
ਇਹ ਗੁਣ ਸੋਧਕ ਨਿਯੰਤਰਿਤ ਕਰਦੇ ਹਨ ਕਿ ਕੀ ਇੱਕ ਗੁਣ ਜ਼ਰੂਰੀ ਹੈ ਅਤੇ ਕੀ ਇਸ ਨੂੰ ਦੁਬਾਰਾ ਨਿਰਧਾਰਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
?) {
: ;
?: ;
}
: = { : };
: = { : , : };
() {
u..;
u.?.;
}
ਇੱਕ ਚੋਣਵੀਂ ਗੁਣ ਦੀ ਕਿਸਮ T | undefined ਹੈ, ਇਸ ਲਈ ਕੰਪਾਈਲਰ ਤੁਹਾਨੂੰ ਗੈਰ-ਮੌਜੂਦ ਸਥਿਤੀ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ — «cannot read property of undefined» ਦੀਆਂ ਤਰੁਟੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ।
interface Point { readonly x: number; readonly y: number; }
const p: Point = { x: 1, y: 2 };
p.x = 5; // ❌ Error: cannot assign to readonly property
// arrays too
const nums: readonly number[] = [1, 2, 3];
nums.push(4); // ❌ push doesn't exist on readonly array
readonly ਸਿਰਫ ਸੰਕਲਨ-ਸਮੇਂ ਤੇ ਹੈ (ਕੋਈ ਰਨਟਾਈਮ ਜ਼ਬਰਦਸਤੀ ਨਹੀਂ), ਪਰ ਇਹ ਕਿਸਮ ਸਿਸਟਮ ਵਿੱਚ ਅਪਰਿਵਰਤਨਸ਼ੀਲਤਾ ਨੂੰ ਦਸਤਾਵੇਜ਼ ਅਤੇ ਲਾਗੂ ਕਰਦਾ ਹੈ, ਅਚੇਤ ਪਰਿਵਰਤਨਾਂ ਨੂੰ ਫੜਦਾ ਹੈ।
interface Config { readonly id: string; tags?: readonly string[]; }
type Frozen = Readonly<User>; // utility type makes ALL props readonly
? ਖਰੀ ਚੋਣਵੀਂ ਡਾਟਾ ਨੂੰ ਮਾਡਲ ਕਰਦਾ ਹੈ ਅਤੇ null-ਸੁਰੱਖਿਆ ਨੂੰ ਮਜਬੂਰ ਕਰਦਾ ਹੈ; readonly ਅਪਰਿਵਰਤਨਸ਼ੀਲਤਾ ਨੂੰ ਪ੍ਰਗਟ ਅਤੇ ਲਾਗੂ ਕਰਦਾ ਹੈ (config, props ਅਤੇ ਅਚੇਤ ਸਟੇਟ ਪਰਿਵਰਤਨ ਨੂੰ ਰੋਕਣ ਲਈ ਸ਼ਾਨਦਾਰ)।
ਦੋਵੇਂ ਕੰਪਾਈਲਰ ਵਿੱਚ ਸਹੀਤਾ ਦੀ ਜਾਂਚ ਨੂੰ ਧੱਕਾ ਦਿੰਦੇ ਹਨ।