गतिशील रूप से टाइप की गई प्रणाली में, मान रनटाइम पर टाइप होते हैं, लेकिन चर और फ़ंक्शन नहीं होते हैं। एक सांख्यिकीय रूप से टाइप की गई प्रणाली में, चर और कार्यों को संकलन-समय पर जाना और जांचा जाता है। जैसे पायथन में कुछ भीx हो सकता है ; रनटाइम पर, यदि यह 1एक संख्या है और यदि यह है "foo", तो यह एक स्ट्रिंग है। आप केवल यह जानते होंगे कि xरनटाइम किस प्रकार का था, और यह हर बार जब आप प्रोग्राम चलाते हैं तो अलग हो सकता है। जावा जैसी भाषा में, आप लिखेंगे int xकि क्या xएक नंबर होना चाहिए, और आप संकलन समय पर जानते होंगे कि xहमेशा एक होना चाहिए int।
"स्पष्ट" और "निहित" प्रकार दोनों स्थिर प्रकार के सिस्टम को संदर्भित करते हैं। एक स्थैतिक प्रणाली की परिभाषित विशेषता यह है कि प्रकारों को संकलन समय पर जाना जाता है , लेकिन जरूरी नहीं कि उन्हें बाहर लिखा जाना चाहिए। जावा में, प्रकार स्पष्ट हैं - आपको उन्हें लिखना होगा। तो जावा में, एक विधि कुछ इस तरह दिख सकती है:
public int foo(String bar, Object baz) { ... }
प्रकार दोनों संकलन समय (स्थिर) पर लिखे गए हैं और बाहर (स्पष्ट) लिखे गए हैं। हालाँकि, ऐसी भाषाएँ भी हैं जो आपको टाइप लिखने के लिए बाध्य नहीं करती हैं। वे अपने शरीर से एक फ़ंक्शन के प्रकार का अनुमान लगा सकते हैं और इसका उपयोग कैसे किया जाता है। एक उदाहरण OCaml होगा, जहाँ आप कुछ लिख सकते हैं:
let foo x = x + 1
जब से आपने उपयोग किया है +, OCaml यह पता लगा सकता है कि सभी को अपने दम पर xहोना चाहिए int। तो के प्रकार foo( foo : int -> int) है सिर्फ जावा उदाहरण की तरह संकलन समय पर जाना जाता है,। यह पूरी तरह से स्थिर है। हालांकि, चूंकि कंपाइलर यह पता लगा सकता है कि किस प्रकार के अपने आप होने हैं, तो आपको उन्हें स्वयं लिखने की ज़रूरत नहीं है: वे निहित हैं।
संक्षेप में: क्या एक प्रकार की प्रणाली स्पष्ट या निहित है, स्थिर प्रणालियों की एक संपत्ति है । यह एक पूरी तरह से अलग सवाल है कि क्या एक प्रकार की प्रणाली गतिशील या स्थिर है।
अक्सर, आपके पास टाइप सिस्टम होते हैं जो कई बार स्पष्ट होते हैं और कई बार निहित होते हैं।
उदाहरण के लिए, मेरा मानना है कि C # आपको varकीवर्ड का उपयोग करते हुए टाइप करने देता है । तो लेखन के बजाय int x = 10, आप लिख सकते हैं var x = 10और है कि बाहर संकलक आंकड़े xएक हो गया है int। C ++ कुछ ऐसा ही करता है auto। ये सिस्टम आमतौर पर स्पष्ट होते हैं, लेकिन कुछ निष्कर्ष हैं।
फ्लिपसाइड पर, ऐसे सिस्टम होते हैं जो आमतौर पर निहित होते हैं लेकिन कभी-कभी आपको एक प्रकार का हस्ताक्षर लिखने के लिए मजबूर करते हैं। हास्केल इसका एक बेहतरीन उदाहरण है। अधिकांश समय, हास्केल आपके लिए प्रकारों का अनुमान लगा सकता है। हालाँकि, कभी-कभी आप ऐसा कोड लिख सकते हैं जो अस्पष्ट हो show . read, जैसे कि हास्केल अपने आप प्रकारों का पता नहीं लगा सकता। इस स्थिति में, आपको showया तो के प्रकार को स्पष्ट रूप से निर्दिष्ट करने के लिए मजबूर किया जाएगा read। इसके अतिरिक्त, टाइप सिस्टम की कुछ और उन्नत सुविधाएँ (जैसे कि रैंक-एन पॉलिमॉर्फिज्म) अनुमान को अनिर्दिष्ट बनाती हैं - अर्थात, यह रुकने की गारंटी नहीं है। इसका मतलब है कि इस सुविधा का उपयोग करने वाले कोड को अक्सर स्पष्ट प्रकार के हस्ताक्षर की आवश्यकता होती है।