دونوں کوئی بھی قدر رکھ سکتے ہیں، لیکن وہ حفاظت میں مختلف ہیں۔ any قسم کی جانچ کو بند کر دیتا ہے؛ unknown اسے چالو رکھتا ہے اور استعمال سے پہلے تنگ کرنے پر مجبور کرتا ہے۔
ts
: = ;
a..;
();
: = ;
u.();
();
دونوں کوئی بھی قدر رکھ سکتے ہیں، لیکن وہ حفاظت میں مختلف ہیں۔ any قسم کی جانچ کو بند کر دیتا ہے؛ unknown اسے چالو رکھتا ہے اور استعمال سے پہلے تنگ کرنے پر مجبور کرتا ہے۔
: = ;
a..;
();
: = ;
u.();
();
function handle(input: unknown) {
if (typeof input === "string") {
input.toUpperCase(); // ✅ inside the guard, TS knows it's a string
}
}
unknown any کا قسم سے محفوظ ہم منصب ہے: آپ اس میں کوئی چیز کر سکتے ہیں، لیکن آپ اس سے کوئی چیز نہیں کر سکتے جب تک آپ قسم کے محافظ کے ذریعے یہ ثابت نہ کریں کہ یہ کیا ہے۔
unknown — حدود پر واقعی نامعلوم قسم کی اقدار کے لیے: JSON.parse نتائج، API ردعمل، catch (e: unknown)۔ یہ تصدیق پر مجبور کرتا ہے۔any — JS منتقل کرتے وقت یا جب آپ واقعی کچھ قسم نہ کر سکیں تو خروجی دروازہ۔ بہت کم استعمال کریں؛ یہ خاموشی سے پھیلتا ہے اور حفاظت کو غیر فعال کرتا ہے۔any تک رسائی TypeScript کے مقصد کو ناکام بناتا ہے۔
غیر قسم کے سرحدوں پر unknown کو ترجیح دیں — یہ compiler کی ضمانتوں کو برقرار رکھتے ہوئے خودسرانہ ان پٹ کو قبول کرتا ہے، آپ کو اس پر اعتماد کرنے سے پہلے ڈیٹا کی تصدیق کرنے پر مجبور کرتے ہوئے۔