इन्फ़रेंस के साथ TypeScript को टाइप का पता लगाने दें, और समझें कि unknown खतरनाक any से बेहतर क्यों है।
इस पाठ को Kodokon में खोलेंअच्छी खबर: आपको हर वेरिएबल को एनोटेट करने की ज़रूरत नहीं। टाइप इन्फ़रेंस की बदौलत, TypeScript आपके द्वारा दिए गए मान से किसी वेरिएबल के टाइप का पता लगा लेता है। let city = "Lyon" लिखना पर्याप्त है: TypeScript जानता है कि city एक string है और उसे ऐसे सुरक्षित करता है मानो आपने उसे एनोटेट किया हो।
let city = "Lyon"; // inferred type: string
let count = 3; // inferred type: number
count = count + 1; // accepted
// city = 42; -> error: city is still a stringany टाइप का अर्थ है "कुछ भी"। एक any वेरिएबल सभी जाँचों से बच निकलता है: TypeScript सत्यापित किए बिना, सब कुछ स्वीकार करता है। यह अपनी सीट बेल्ट हटाने जैसा है: कोड कंपाइल हो जाता है, लेकिन त्रुटियाँ रनटाइम पर वापस आ जाती हैं - ठीक वही जिसे TypeScript को रोकना था।
let data: any = "hello";
data = 42; // accepted without complaint
// Compiles, but crashes at runtime:
// data.toUpperCase() does not exist on a number!ऐसे मान के लिए जिसका टाइप वास्तव में अज्ञात है (एक सर्वर प्रतिक्रिया, उपयोगकर्ता इनपुट), unknown को प्राथमिकता दें। any की तरह, यह किसी भी मान को स्वीकार करता है, लेकिन यह आपको उपयोग करने से पहले टाइप जाँचने के लिए मजबूर करता है (उदाहरण के लिए typeof के साथ)। इसलिए सुरक्षा बरकरार रहती है।
let value: unknown = "hello";
// console.log(value.toUpperCase()); -> rejected!
if (typeof value === "string") {
console.log(value.toUpperCase()); // "HELLO"
}