टाइपप्रति क्या है और क्यों मैं जावास्क्रिप्ट के स्थान पर यह प्रयोग करेंगे?

वोट
1k

आप कृपया वर्णन कर सकते क्या टाइपप्रति भाषा है?

ऐसा लगता है कि जावास्क्रिप्ट या उपलब्ध पुस्तकालयों ऐसा नहीं कर सकते क्या कर सकते हैं, कि मुझे यह विचार करने के लिए कारण देना होगा?

02/10/2012 को 17:37
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


5 जवाब

वोट
979

मैं मूल रूप से इस जवाब लिखा जब टाइपप्रति अभी भी गर्म ऑफ-द-प्रेस। पांच साल बाद, यह एक ठीक सिंहावलोकन है, लेकिन देखो Lodewijk के जवाब और अधिक गहराई के लिए नीचे दिए गए

1000ft दृश्य ...

टाइपप्रति जावास्क्रिप्ट का सुपरसेट जो मुख्य रूप से वैकल्पिक स्थिर टाइपिंग, वर्गों और इंटरफेस प्रदान करता है। बड़े लाभों में से एक आम त्रुटियों खोलना के लिए एक अमीर वातावरण प्रदान करने के IDEs सक्षम करने के लिए है आप कोड टाइप के रूप में

मैं क्या मतलब है की एक विचार प्राप्त करने के लिए, को देखने के माइक्रोसॉफ्ट के परिचयात्मक वीडियो भाषा पर।

एक बड़ी जावास्क्रिप्ट परियोजना के लिए, टाइपप्रति अपनाने और अधिक मजबूत सॉफ्टवेयर में परिणाम हो सकता है, जबकि अभी भी परिनियोजन योग्य जा रहा है, जहां एक नियमित रूप से जावास्क्रिप्ट आवेदन चलाना शामिल है।

यह खुला स्रोत है, लेकिन आप केवल चालाक Intellisense पाने के रूप में आप टाइप करता है, तो आप एक समर्थित आईडीई का उपयोग करें। प्रारंभ में, यह केवल माइक्रोसॉफ्ट के दृश्य स्टूडियो (भी से ब्लॉग पोस्ट में उल्लेख किया था Miguel de Icaza )। इन दिनों, अन्य IDEs भी टाइपप्रति सहायता प्रदान करते हैं

ऐसा लगता है कि वहाँ अन्य प्रौद्योगिकियों हैं?

नहीं है CoffeeScript , लेकिन वास्तव में एक अलग ही उद्देश्य। IMHO, CoffeeScript मनुष्य के लिए पठनीयता प्रदान करता है, लेकिन टाइपप्रति भी के लिए गहरी पठनीयता प्रदान करता है उपकरण अपने वैकल्पिक स्थिर टाइपिंग के माध्यम से (यह देख हाल ब्लॉग पोस्ट को थोड़ा और आलोचना के लिए)। वहाँ भी है डार्ट लेकिन यह है कि जावास्क्रिप्ट के लिए प्रतिस्थापन पर एक पूर्ण है (हालांकि यह जावा स्क्रिप्ट कोड का उत्पादन कर सकते )

उदाहरण

एक उदाहरण के रूप में, यहाँ कुछ टाइपप्रति है (आप में इस के साथ खेल सकते टाइपप्रति खेल का मैदान )

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}  

और यहाँ जावास्क्रिप्ट यह उत्पादन होता है

var Greeter = (function () {
    function Greeter(message) {
        this.greeting = message;
    }
    Greeter.prototype.greet = function () {
        return "Hello, " + this.greeting;
    };
    return Greeter;
})();

गौर करें कि टाइपप्रति सदस्य चर और वर्ग विधि पैरामीटर के प्रकार को परिभाषित करता है। जब जावास्क्रिप्ट में अनुवाद यह हटा दिया, लेकिन निर्माता के लिए एक संख्यात्मक प्रकार गुजर तरह, त्रुटियों को पहचानना आईडीई और संकलक द्वारा किया जाता है।

यह भी प्रकार जो स्पष्ट रूप से घोषित नहीं कर रहे हैं निष्कर्ष निकालते उदाहरण के लिए करने में सक्षम है, यह निर्धारित करेंगे greet()विधि एक स्ट्रिंग देता है।

डिबगिंग टाइपप्रति

कई ब्राउज़र और IDEs sourcemaps के माध्यम से प्रत्यक्ष डिबगिंग सहायता प्रदान करते हैं। : इस स्टैक ओवरफ़्लो अधिक जानकारी के लिए प्रश्न देखें दृश्य स्टूडियो के साथ डिबगिंग टाइपप्रति कोड

अधिक जानना चाहते हैं?

मैं मूल रूप से इस जवाब लिखा जब टाइपप्रति अभी भी गर्म ऑफ-द-प्रेस। की जाँच करें Lodewijk का जवाब कुछ और वर्तमान विस्तार के लिए इस सवाल का।

02/10/2012 को 17:41
का स्रोत उपयोगकर्ता

वोट
674

हालांकि स्वीकार किए जाते हैं जवाब ठीक है, मैं यह वास्तव में इस बिंदु पर टाइपप्रति न्याय भी नहीं करता था। यह शुरुआती दिनों अब और नहीं है। टाइपप्रति कई लोकप्रिय चौखटे टाइपप्रति में लिखा जा रहा के साथ अब एक बहुत अधिक गोद लेने जा रहे हैं। कारणों से आप जावास्क्रिप्ट के बजाय टाइपप्रति का चयन करना चाहिए अब कई हैं।

जावास्क्रिप्ट के संबंध

जावास्क्रिप्ट ECMAScript मानकों के माध्यम से मानकीकरण किया है। नहीं उपयोग समर्थन में सभी ब्राउज़रों नए ECMAScript मानकों की सभी सुविधाओं (यह देखने तालिका )। टाइपप्रति नए ECMAScript मानकों का समर्थन करता है और उन्हें अपनी पसंद के (पुराने) ECMAScript लक्ष्य को संकलित करता है (वर्तमान लक्ष्य कर रहे हैं 3, 5 और 6 [उर्फ 2015])। इसका मतलब यह है कि आप ES2015 की सुविधाओं का उपयोग कर सकते हैं और उससे आगे, मॉड्यूल, लैम्ब्डा काम करता है, कक्षाएं, प्रसार ऑपरेटर, destructuring, आज की तरह। यह भी निश्चित रूप से समर्थन है, जो किसी भी ECMAScript मानक का हिस्सा नहीं है और संभावना जावास्क्रिप्ट की संकलित प्रकृति के बजाय व्याख्या की प्रकृति के कारण कभी नहीं हो सकता है टाइप कहते हैं। टाइपप्रति के प्रकार प्रणाली अपेक्षाकृत समृद्ध है और शामिल हैं: इंटरफेस, enums, संकर प्रकार, जेनरिक, संघ और चौराहे प्रकार, पहुँच संशोधक और भी बहुत कुछ। आधिकारिक वेबसाइट टाइपप्रति की इन सुविधाओं में से एक सिंहावलोकन देता है।

अन्य जावास्क्रिप्ट को लक्षित भाषाओं के संबंध

टाइपप्रति अन्य भाषाओं कि जावास्क्रिप्ट को संकलित करने के लिए की तुलना में एक अनूठा दर्शन है। जावा स्क्रिप्ट कोड मान्य टाइपप्रति कोड है, टाइपप्रति जावास्क्रिप्ट का सुपरसेट है। आप लगभग अपने नाम बदल सकते हैं .jsकरने के लिए फ़ाइलों .tsफ़ाइलें और टाइपप्रति का उपयोग शुरू। टाइपप्रति फ़ाइलें, जावास्क्रिप्ट पठनीय को संकलित कर रहे हैं ताकि पलायन वापस संभव है और संकलित टाइपप्रति समझने बिल्कुल मुश्किल नहीं है। इस तरह टाइपप्रति जावास्क्रिप्ट की सफलता पर बनाता है अपनी कमजोरियों पर सुधार लाने जबकि।

एक ओर, आप भविष्य सबूत उपकरण है कि आधुनिक ECMAScript मानकों लेने के लिए और कोलाहल सबसे लोकप्रिय एक होने के साथ पुराने जावास्क्रिप्ट संस्करण के लिए इसे नीचे संकलन है। दूसरी ओर, आप भाषाओं कि पूरी तरह से जावास्क्रिप्ट से अलग हो सकता है जिन्हें JavaScript, Coffeescript, Clojure, डार्ट, एल्म, Haxe, ScalaJs तरह लक्षित करने दें, और एक पूरी मेजबान अधिक (यह देखने सूची )। इन भाषाओं, हालांकि वे जहां जावास्क्रिप्ट के भविष्य कभी जन्म दे सकता है की तुलना में बेहतर हो सकता है, पर्याप्त गोद लेने नहीं मिल उनके भविष्य की गारंटी के लिए के लिए का एक बड़ा खतरा चलाते हैं। तुम भी अधिक मुसीबत इन भाषाओं में से कुछ के लिए अनुभवी डेवलपर्स की खोज है, हालांकि लोगों को आप पाएंगे अक्सर अधिक उत्साही हो सकता है हो सकता है। जावास्क्रिप्ट के साथ Interop भी है, क्योंकि वे आगे क्या जावास्क्रिप्ट वास्तव में है से निकाल दिए जाते थोड़ा और अधिक शामिल हो सकता है।

टाइपप्रति इन दो चरम सीमाओं के बीच में बैठता है, इस प्रकार जोखिम संतुलन। टाइपप्रति किसी भी मानक से एक जोखिम भरा विकल्प नहीं है। यह बहुत कम है, तो आप जावास्क्रिप्ट के साथ परिचित हैं के लिए इस्तेमाल किया पाने के लिए प्रयास लेता है, क्योंकि यह एक पूरी तरह से अलग भाषा नहीं है, उत्कृष्ट जावास्क्रिप्ट के पारस्परिक समर्थन है और यह हाल ही में गोद लेने की एक बहुत कुछ देखा है।

वैकल्पिक रूप से स्थिर टाइपिंग और प्रकार निष्कर्ष

जावास्क्रिप्ट गतिशील रूप से लिखा गया। इसका मतलब यह है जावास्क्रिप्ट पता नहीं है जब तक यह वास्तव में रन-टाइम में instantiated है कि किस प्रकार एक चर है। यह भी मतलब है कि यह बहुत देर हो चुकी हो सकता है। टाइपप्रति टाइप जावास्क्रिप्ट को समर्थन जोड़ता है। कीड़े कि एक खास प्रकार के कुछ चर जा रहा है की झूठी मान्यताओं के कारण होता है पूरी तरह से अगर आप अपने कार्ड सही खेलते नाश किया जा सकता; कैसे सख्त आप अपने कोड लिख सकते हैं या यदि आप सभी पर अपने कोड लिखें आप पर निर्भर है।

टाइपप्रति थोड़ा आसान और प्रकार निष्कर्ष के उपयोग से बहुत कम स्पष्ट टाइपिंग बनाता है। उदाहरण के लिए: var x = "hello"टाइपप्रति में रूप में ही है var x : string = "hello"। प्रकार बस इसके उपयोग से अनुमान लगाया गया है। यहां तक कि यह आप स्पष्ट रूप से प्रकार टाइप न करें, वे अभी भी कुछ है जो अन्यथा एक रन-टाइम त्रुटि में परिणाम होगा करने से आप को बचाने के लिए कर रहे हैं।

टाइपप्रति वैकल्पिक रूप से डिफ़ॉल्ट रूप से लिखा गया। उदाहरण के लिए function divideByTwo(x) { return x / 2 }टाइपप्रति में एक वैध समारोह जिसके साथ कहा जा सकता है है किसी भी , पैरामीटर के प्रकार भले ही एक तार के साथ यह फोन कर स्पष्ट रूप से एक का परिणाम देगा क्रम त्रुटि। बस आप जावास्क्रिप्ट में करने के लिए उपयोग किया जाता है की तरह। यह काम करता है क्योंकि जब कोई प्रकार स्पष्ट रूप से सौंपा गया था और प्रकार divideByTwo उदाहरण की तरह, पता नहीं लगाया जा सकता है, टाइपप्रति परोक्ष प्रकार प्रदान करेंगे any। इसका मतलब यह है divideByTwo समारोह के प्रकार हस्ताक्षर स्वचालित रूप से हो जाता है function divideByTwo(x : any) : any। वहाँ इस व्यवहार की अनुमति नहीं देने के लिए एक संकलक झंडा है: --noImplicitAny। इस फ्लैग को सक्षम आप सुरक्षा का एक बड़ा डिग्री देता है, लेकिन यह भी मतलब है कि आप अधिक टाइपिंग करना होगा।

प्रकार एक लागत उनसे जुड़े है। सब से पहले वहाँ एक सीखने की अवस्था है, और सभी के पीछे नहीं है, ज़ाहिर है, यह आप भी उचित सख्त टाइपिंग का उपयोग कर एक codebase स्थापित करने के लिए थोड़ा और समय खर्च होंगे। मेरे अनुभव में, इन लागत यह पूरी तरह से लायक किसी भी गंभीर codebase आप दूसरों के साथ साझा कर रहे हैं पर कर रहे हैं। Github में प्रोग्रामिंग भाषाओं और कोड गुणवत्ता की एक बड़े पैमाने पर अध्ययन पता चलता है कि "सामान्य रूप में है कि स्थिर टाइप किया भाषाओं कम दोष गतिशील प्रकार से ग्रस्त हैं, और कहा कि मजबूत टाइपिंग ही संबंध में कमजोर टाइपिंग की तुलना में बेहतर है।"

यह इस बहुत ही कागज पता चलता है कि कि टाइपप्रति कम त्रुटि तो जावास्क्रिप्ट संभावना है नोट करने के लिए दिलचस्प है:

सकारात्मक गुणांक के साथ उन लोगों के लिए हम उम्मीद कर सकते हैं कि भाषा, साथ ceteris paribus, दोष फिक्स की एक बड़ी संख्या जुड़ा हुआ है। इन भाषाओं सी, सी ++, शामिल जावास्क्रिप्ट , ऑब्जेक्टिव-सी, PHP, और अजगर। भाषाओं Clojure, हास्केल, रूबी, स्काला, और टाइपप्रति , सभी नकारात्मक गुणांक जिसका अर्थ है कि इन भाषाओं कम दोष फिक्सिंग करता है की तुलना में औसत परिणाम की संभावना हैं।

बढ़ी आईडीई समर्थन

टाइपप्रति साथ विकास अनुभव जावास्क्रिप्ट पर एक महान सुधार है। आईडीई वास्तविक समय में अपने अमीर प्रकार की जानकारी पर टाइपप्रति संकलक द्वारा सूचित किया जाता है। यह प्रमुख लाभ की एक जोड़ी देता है। उदाहरण के लिए, टाइपप्रति साथ आप सुरक्षित रूप से अपने पूरे codebase भर renames तरह refactorings कर सकते हैं। कोड पूरा होने के माध्यम से आप जो कुछ भी काम करता है एक पुस्तकालय पेश कर सकती है पर इनलाइन मदद मिल सकती है। कोई और अधिक उन्हें याद हैं या ऑनलाइन संदर्भ में उन्हें देखने की जरूरत है। संकलन त्रुटि सीधे एक लाल टेढ़ी-मेढ़ी लाइन के साथ आईडीई में सूचना दी, जबकि आप व्यस्त कोडिंग कर रहे हैं। यह सब के सभी जावास्क्रिप्ट के साथ काम करने की तुलना में उत्पादकता में एक महत्वपूर्ण लाभ के लिए अनुमति देता है। एक बार कोडिंग और कम समय डिबगिंग खर्च कर सकते हैं।

वहाँ IDEs टाइपप्रति के लिए उत्कृष्ट समर्थन है, विजुअल स्टूडियो और वी.एस. कोड, एटम, उदात्त, और इंटेलीजे / WebStorm की तरह की एक विस्तृत श्रृंखला है।

सख्त अशक्त चेकों

फार्म के क्रम त्रुटियों cannot read property 'x' of undefinedया undefined is not a functionबहुत सामान्य जावा स्क्रिप्ट कोड में कीड़े की वजह से कर रहे हैं। बॉक्स टाइपप्रति से बाहर पहले से ही त्रुटियों के इन प्रकार की संभावना से होने वाली के बाद से एक (के गुणों के अपवाद के साथ एक चर है कि टाइपप्रति संकलक करने के लिए नहीं जाना जाता है का उपयोग नहीं कर सकते हैं कम कर देता है anyटाइप किया चर)। यह अभी भी संभव है, हालांकि गलती से एक चर पर सेट होता है उपयोग करने के लिए undefined। हालांकि, टाइपप्रति के 2.0 संस्करण के साथ आप त्रुटियों के इन प्रकार के सभी एक साथ गैर-व्यर्थ प्रकार के उपयोग के माध्यम से समाप्त कर सकते हैं। यह इस प्रकार काम करता है:

सख्त अशक्त चेकों सक्षम (साथ --strictNullChecksसंकलक झंडा) टाइपप्रति संकलक अनुमति नहीं दी जाएगी undefinedएक चर को सौंपा जा करने के लिए जब तक आप स्पष्ट यह घोषणा नल प्रकार की होनी चाहिए। उदाहरण के लिए, let x : number = undefinedएक संकलन त्रुटि का परिणाम देगा। यह, प्रकार के सिद्धांत के साथ बिल्कुल फिट बैठता है के बाद से undefinedएक नंबर नहीं है। एक परिभाषित कर सकते हैं xकी राशि प्रकार होना numberऔर undefinedइसे ठीक करने के: let x : number | undefined = undefined

एक बार एक प्रकार है, जिसका अर्थ व्यर्थ होने के लिए जाना जाता है यह एक प्रकार है कि यह भी मूल्य का हो सकता है की है nullया undefined, टाइपप्रति संकलक नियंत्रण प्रवाह आधारित प्रकार विश्लेषण के माध्यम से निर्धारित कर सकते हैं या नहीं, अपने कोड को सुरक्षित रूप से नहीं एक चर का उपयोग करें या कर सकते हैं। दूसरे शब्दों में, जब आप की जाँच एक चर रहा है undefinedउदाहरण के लिए एक के माध्यम से ifबयान टाइपप्रति संकलक का अनुमान लगा होगा कि आपके कोड के नियंत्रण के प्रवाह की उस शाखा में प्रकार अब और नल नहीं है और इसलिए सुरक्षित रूप से इस्तेमाल किया जा सकता। ये रहा एक सरल उदाहरण:

let x: number | undefined;
if (x !== undefined) x += 1; // this line will compile, because x is checked.
x += 1; // this line will fail compilation, because x might be undefined.

: टाइपप्रति एंडर्स हेल्स्बर्ग के निर्माण 2016 सम्मेलन सह डिजाइनर के दौरान एक विस्तृत विवरण और प्रदर्शन इस सुविधा का दिया वीडियो (44:30 से 56:30 के लिए)।

संकलन

टाइपप्रति उपयोग करने के लिए आप एक निर्माण प्रक्रिया जावा स्क्रिप्ट कोड को संकलित करने के लिए की जरूरत है। निर्माण प्रक्रिया आम तौर पर अपनी परियोजना के आकार पर निर्भर करता है निश्चित रूप से सेकंड का केवल एक जोड़े को ले जाता है। टाइपप्रति संकलक वृद्धिशील संकलन (का समर्थन करता है --watch, संकलक झंडा) इतना है कि बाद के सभी परिवर्तन अधिक से अधिक गति से संकलित किया जा सकता।

टाइपप्रति संकलक .js उत्पन्न फ़ाइलों में स्रोत नक्शा जानकारी इनलाइन या अलग .map फ़ाइलें बना सकते हैं। स्रोत नक्शा जानकारी Chrome DevTools और अन्य आईडीई की तरह उपयोगिताओं डिबगिंग जो कि उन्हें टाइपप्रति में उत्पन्न करने के लिए जावास्क्रिप्ट में लाइनों से संबंधित द्वारा इस्तेमाल किया जा सकता है। यह यह संभव आप विच्छेदबिंदु स्थापित करने और अपने टाइपप्रति कोड पर सीधे रनटाइम के दौरान चर का निरीक्षण करने के लिए बनाता है। स्रोत नक्शा जानकारी बहुत अच्छी काम करता है, यह टाइपप्रति से पहले लंबे समय के आसपास थी, लेकिन डिबगिंग टाइपप्रति आम तौर पर जब जावास्क्रिप्ट सीधे का उपयोग कर के रूप में के रूप में महान नहीं है। लो this, उदाहरण के लिए कीवर्ड। की बदली हुई अर्थ विज्ञान के कारण thisES2015 के बाद से बंद के आसपास कीवर्ड, thisवास्तव में एक चर बुलाया के रूप में रनटाइम के दौरान मौजूद हो सकता है _this(देखें इस उत्तर )। यह डीबगिंग के दौरान आप भ्रमित हो सकते हैं, लेकिन आम तौर पर एक समस्या है, तो आप या इस बारे में पता जावा स्क्रिप्ट कोड का निरीक्षण नहीं है। यह ध्यान देने योग्य है कि कोलाहल मुद्दे का ठीक उसी तरह ग्रस्त है।

कुछ अन्य चाल टाइपप्रति संकलक कर सकते हैं, के आधार पर अवरोध उत्पन्न कर कोड जनरेट की तरह हैं सज्जाकार , विभिन्न मॉड्यूल सिस्टम के लिए मॉड्यूल लोड हो रहा है कोड जनरेट करने और पार्स करने JSX । हालांकि, आप की संभावना एक निर्माण उपकरण टाइपप्रति संकलक के अलावा की आवश्यकता होगी। उदाहरण के लिए यदि आप अपने कोड सेक करना चाहते हैं तो आप अपने निर्माण प्रक्रिया के लिए अन्य उपकरणों को जोड़ने के लिए ऐसा करने के लिए होगा।

वहाँ टाइपप्रति संकलन के लिए उपलब्ध प्लगइन्स हैं Webpack , Gulp , ग्रंट और काफी किसी अन्य जावास्क्रिप्ट निर्माण उपकरण वहाँ बाहर। टाइपप्रति प्रलेखन पर एक अनुभाग है निर्माण उपकरण के साथ एकीकृत उन सब को कवर। एक लिंटर भी उपलब्ध है मामले में आप और भी अधिक चाहते हैं समय की जाँच का निर्माण। वहाँ भी वहाँ बाहर बीज परियोजनाओं है कि मिल जाएगा आप कोणीय 2, प्रतिक्रिया, एंबर, SystemJs, Webpack, Gulp, आदि जैसे अन्य प्रौद्योगिकियों के एक समूह के साथ संयोजन में टाइपप्रति के साथ शुरू की एक बड़ी संख्या में हैं

जावास्क्रिप्ट अंतर

चूंकि टाइपप्रति इतनी बारीकी जावास्क्रिप्ट से संबंधित है यह बहुत अच्छा अंतर क्षमता है, लेकिन कुछ अतिरिक्त काम टाइपप्रति में जावास्क्रिप्ट पुस्तकालयों के साथ काम करने के लिए आवश्यक है। टाइपप्रति परिभाषाओं की जरूरत है, ताकि टाइपप्रति संकलक समझता है कि समारोह की तरह कॉल कर रहे हैं _.groupByया angular.copyया $.fadeOutतथ्य अवैध बयान में नहीं हैं। इन कार्यों के लिए परिभाषाओं में रखा जाता है .d.tsफ़ाइलें।

सरलतम रूप एक परिभाषा ले जा सकते हैं एक पहचानकर्ता किसी भी तरह से इस्तेमाल किया जा करने की अनुमति है। उदाहरण के लिए, का उपयोग करते समय Lodash , एक पंक्ति परिभाषा फ़ाइल declare var _ : anyआप किसी भी समारोह आप पर चाहते हैं कॉल करने के लिए अनुमति देगा _, लेकिन फिर बेशक आप भी अभी भी गलती करते हैं करने में सक्षम हैं: _.foobar()एक कानूनी टाइपप्रति कॉल होगा, लेकिन एक अवैध कॉल निश्चित रूप से है चलने के समय पर। आप उचित प्रकार का समर्थन और कोड पूरा होने चाहते हैं अपनी परिभाषा फाइल करने के लिए (देखें अधिक सटीक होने की जरूरत है lodash परिभाषाएँ एक उदाहरण के लिए)।

NPM मॉड्यूल है कि उनके अपने प्रकार परिभाषा के साथ पहले से पैक आ स्वचालित रूप से टाइपप्रति संकलक (देखें द्वारा समझ रहे हैं प्रलेखन )। काफी किसी अन्य अर्द्ध लोकप्रिय JavaScript लाइब्रेरी कि अपनी ही परिभाषाओं किसी को शामिल नहीं करता बाहर वहाँ पहले से ही प्रकार एक और NPM मॉड्यूल के माध्यम से उपलब्ध परिभाषाओं बना दिया है के लिए। ये मॉड्यूल "@ प्रकार /" उपसर्ग के साथ और एक Github भंडार कहा जाता है से आते हैं कर रहे हैं DefinitelyTyped

प्रकार परिभाषाएं पुस्तकालय आप रन-टाइम में उपयोग कर रहे हैं के संस्करण से मेल खाना चाहिए: वहाँ एक चेतावनी है। यदि वे नहीं है, टाइपप्रति एक समारोह कॉल करने या एक चर है कि मौजूद है या आप एक समारोह कॉल करने के लिए या जो मौजूद नहीं है एक चर भिन्नता, बस क्योंकि प्रकार संकलन समय पर चलाने के समय से मेल नहीं खाते अनुमति देते हैं अपसंदर्भन से आप अनुमति नहीं देते हो सकता है । तो सुनिश्चित करें कि आप पुस्तकालय आप उपयोग कर रहे का सही संस्करण के लिए प्रकार परिभाषाएं का सही संस्करण लोड कर सकते हैं।

ईमानदारी से कहूं तो, इस के लिए एक मामूली परेशानी है और यह कारणों से आप टाइपप्रति नहीं चुनते में से एक हो सकता है, लेकिन इसके बजाय कोलाहल की तरह कुछ है कि सभी पर प्रकार परिभाषाएं प्राप्त करने के लिए होने से कष्ट नहीं होता है के लिए जाना। दूसरी ओर, यदि आप जानते हैं कि आप क्या कर रहे हैं आप आसानी से गलत या लापता परिभाषा फ़ाइलों की वजह से मुद्दों के किसी भी प्रकार दूर कर सकते हैं।

जावास्क्रिप्ट से परिवर्तित टाइपप्रति को

किसी भी .jsफ़ाइल एक को नाम दिया जा सकता .tsहै और टाइपप्रति संकलक से होकर गुजरता था वाक्य रचना एक आउटपुट के रूप में ही जावास्क्रिप्ट कोड प्राप्त करने के (अगर यह वाक्य रचना पहली जगह में सही था)। यहां तक कि जब टाइपप्रति संकलक संकलन त्रुटियों हो जाता है यह अभी भी एक का उत्पादन करेगा .jsफ़ाइल। यह भी स्वीकार कर सकते हैं .jsके साथ इनपुट के रूप में फाइल --allowJsझंडा। यह आपको टाइपप्रति साथ शुरू करने के लिए तुरंत अनुमति देता है। दुर्भाग्य से संकलन त्रुटियों शुरुआत में होने की संभावना है। एक याद करने के लिए है कि इन दिखाने-रोक नहीं कर रहे हैं त्रुटियों की तरह आप अन्य compilers के साथ किया जा सकता है की जरूरत है।

संकलन त्रुटियों एक जब एक टाइपप्रति परियोजना के लिए एक जावास्क्रिप्ट परियोजना परिवर्तित शुरुआत में हो जाता है टाइपप्रति के स्वभाव से अपरिहार्य हैं। टाइपप्रति की जाँच करता है सब वैधता के लिए कोड और इस प्रकार यह सभी कार्यों और चर कि उपयोग किया जाता है के बारे में पता करने की जरूरत है। इस प्रकार प्रकार परिभाषाएं उन सभी को अन्यथा संकलन त्रुटियां होती हैं करने के लिए बाध्य कर रहे हैं के लिए जगह में होना चाहिए। जैसा कि ऊपर अध्याय में उल्लेख किया है, काफी किसी भी जावास्क्रिप्ट ढांचे के लिए देखते हैं .d.tsफ़ाइलों को आसानी से की स्थापना के साथ प्राप्त किया जा सकता है कि DefinitelyTyped संकुल । हालांकि यह हो सकता है कि आप जिसके लिए कोई टाइपप्रति परिभाषाओं उपलब्ध हैं या आप कुछ जावास्क्रिप्ट पुरातन polyfilled है कि कुछ अस्पष्ट पुस्तकालय का उपयोग किया है। उस मामले में आप संकलन त्रुटियों गायब करने के लिए आदेश में इन बिट्स के लिए प्रकार परिभाषाएं प्रदान करना होगा। बस एक बनाने .d.tsफ़ाइल और tsconfig.json के में शामिल files, सरणी इतना है कि यह हमेशा टाइपप्रति संकलक द्वारा माना जाता है। इस रिपोर्ट में उन बिट्स कि टाइपप्रति प्रकार के रूप में के बारे में पता नहीं है की घोषणा any। जब आप सभी त्रुटियों का सफाया कर दिया गया है आप धीरे-धीरे अपनी आवश्यकताओं के अनुसार उन भागों के लिए टाइपिंग शुरू कर सकते हैं।

(फिर से) अपने निर्माण पाइपलाइन कॉन्फ़िगर करने पर कुछ काम भी निर्माण पाइपलाइन में टाइपप्रति पाने के लिए की आवश्यकता होगी। के रूप में संकलन पर अध्याय में उल्लेख किया है वहाँ अच्छे संसाधन के बहुत सारे हैं और मैं बीज परियोजनाओं कि उपकरण आप के साथ काम करना चाहते हैं के संयोजन का उपयोग करें देखने के लिए प्रोत्साहित करते हैं।

सबसे बड़ी बाधा सीखने की अवस्था है। मैं पहली बार में एक छोटे से परियोजना के साथ चारों ओर खेलने के लिए प्रोत्साहित करते हैं। देखो यह कैसे काम करता है, यह कैसे बनाता है, जो फ़ाइलों का उपयोग करता है, यह कैसे कॉन्फ़िगर किया गया है, यह कैसे अपने आईडीई, यह कैसे संरचित है, जो उपकरण का उपयोग करता है, आदि टाइपप्रति के लिए एक बड़ी जावास्क्रिप्ट codebase परिवर्तित में कार्य करता है बहुत मुमकिन है जब आप पता है कि तुम क्या कर रहे हैं, लेकिन यह निराशा हो सकता है जब आप नहीं।

दत्तक ग्रहण

टाइपप्रति खुला स्रोत (अपाचे 2 लाइसेंस, देखना है GitHub ) और Microsoft द्वारा समर्थित। एंडर्स हेल्स्बर्ग , सी # के नेतृत्व वास्तुकार परियोजना का नेतृत्व कर रहा है। यह एक बहुत ही सक्रिय परियोजना है, टाइपप्रति टीम पिछले कुछ वर्षों में नई सुविधाओं के एक बहुत कुछ को रिहा कर दिया गया है और महान लोगों का एक बहुत अभी भी आ (देखने के लिए योजना बनाई गई है रोडमैप )।

में 2017 StackOverflow डेवलपर सर्वेक्षण टाइपप्रति सबसे लोकप्रिय जावास्क्रिप्ट transpiler (9 वें स्थान समग्र) था और सबसे प्यार करता था प्रोग्रामिंग भाषा श्रेणी में तीसरा स्थान जीता।

27/01/2016 को 21:23
का स्रोत उपयोगकर्ता

वोट
49

टाइपप्रति क्या कम या सास सीएसएस के लिए करता है करने के लिए कुछ ऐसा ही। वे इसे के सुपर सेट, जिसका अर्थ है कि हर जे एस कोड आप लिखते हैं वैध टाइपप्रति कोड है कर रहे हैं। इसके अलावा आप अन्य उपहार है कि यह भाषा में जोड़ता उपयोग कर सकते हैं, और transpiled कोड मान्य js हो जाएगा। तुम भी जे एस संस्करण है कि आप पर अपने जिसके परिणामस्वरूप कोड चाहते हैं निर्धारित कर सकते हैं।

वर्तमान में टाइपप्रति ES2015 का एक सुपर सेट है, इसलिए अपनी परियोजना के लिए आवश्यक मानक के लिए नए js सुविधाओं और transpile सीखने शुरू करने के लिए एक अच्छा विकल्प हो सकता है।

11/02/2016 को 20:32
का स्रोत उपयोगकर्ता

वोट
29

" टाइपप्रति बुनियादी बातों " - एक Pluralsight वीडियो पाठ्यक्रम द्वारा दान Wahlin और जॉन पिताजी एक बहुत अच्छी, वर्तमान में (25 मार्च 2016) टाइपप्रति 1.8 के अनुसार अपडेट, परिचय टाइपप्रति है।

मेरे लिए वास्तव में अच्छा सुविधाओं, IntelliSense के लिए अच्छा संभावनाओं के बगल में, कर रहे हैं वर्गों , इंटरफेस , मॉड्यूल , एएमडी को लागू करने में आसानी, और संभावना जब IE के साथ लागू दृश्य स्टूडियो टाइपप्रति डिबगर उपयोग करने के लिए।

संक्षेप में : के रूप में इरादा उपयोग किया है, टाइपप्रति JavaScript प्रोग्रामिंग और अधिक विश्वसनीय, और आसान बना सकते हैं। यह काफी पूर्ण SDLC से अधिक जावास्क्रिप्ट प्रोग्रामर की उत्पादकता में वृद्धि कर सकते हैं।

27/12/2015 को 04:18
का स्रोत उपयोगकर्ता

वोट
7

ऐक्मा स्क्रिप्ट 5 (ES5), जो सभी ब्राउज़र समर्थन और precompiled। ES6 / ES2015 और ES / 2016 परिवर्तन इसलिए ये परिवर्तन पॉप अप करने के बहुत सारे के साथ इस साल आया था वहाँ जो बीच में कुछ तो टाइपप्रति के बारे में चिंताओं लेना चाहिए है। • टाइपप्रति प्रकार है -> मतलब है कि हम प्रत्येक संपत्ति और तरीकों की डेटाप्रकार परिभाषित करने के लिए किया है। यदि आप जानते हैं सी # तो टाइपप्रति समझने में आसान है। • टाइपप्रति के बड़े लाभ से संबंधित मुद्दों हम पहचान प्रकार प्रारंभिक उत्पादन पर जाने से पहले है। यह अगर कोई प्रकार मेल नहीं खाता है इकाई परीक्षण विफल अनुमति देता है।

06/06/2016 को 12:14
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more