TypeScript
बाहरी पुस्तकालयों का आयात करना
खोज…
वाक्य - विन्यास
-
import {component} from 'libName'; // Will import the class "component"
-
import {component as c} from 'libName'; // Will import the class "component" into a "c" object
-
import component from 'libname'; // Will import the default export from libName
-
import * as lib from 'libName'; // Will import everything from libName into a "lib" object
-
import lib = require('libName'); // Will import everything from libName into a "lib" object
-
const lib: any = require('libName'); // Will import everything from libName into a "lib" object
-
import 'libName'; // Will import libName module for its side effects only
टिप्पणियों
ऐसा लग सकता है कि वाक्य रचना
import * as lib from 'libName';
तथा
import lib = require('libName');
एक ही बात कर रहे हैं, लेकिन वे नहीं हैं!
आइए विचार करें कि हम टाइपस्क्रिप्ट-विशिष्ट export =
वाक्य रचना के साथ निर्यात किए गए एक व्यक्ति को आयात करना चाहते हैं:
class Person {
...
}
export = Person;
इस मामले में इसे es6 सिंटैक्स के साथ आयात करना संभव नहीं है (हम संकलन समय पर एक त्रुटि प्राप्त करेंगे), टाइपस्क्रिप्ट-विशिष्ट import =
सिंटैक्स का उपयोग किया जाना चाहिए।
import * as Person from 'Person'; //compile error
import Person = require('Person'); //OK
रूपांतरण सही है: क्लासिक मॉड्यूल को दूसरे सिंटैक्स के साथ आयात किया जा सकता है, इसलिए, एक तरह से अंतिम सिंटैक्स अधिक शक्तिशाली है क्योंकि यह सभी निर्यातों को आयात करने में सक्षम है।
अधिक जानकारी के लिए आधिकारिक दस्तावेज देखें।
एनपीएम से एक मॉड्यूल आयात करना
यदि आपके पास मॉड्यूल के लिए एक प्रकार की परिभाषा फ़ाइल (d.ts) है, तो आप एक import
विवरण का उपयोग कर सकते हैं।
import _ = require('lodash');
यदि आपके पास मॉड्यूल के लिए परिभाषा फ़ाइल नहीं है, तो टाइपस्क्रिप्ट संकलन पर एक त्रुटि फेंक देगा क्योंकि यह उस मॉड्यूल को नहीं पा सकता है जिसे आप आयात करने की कोशिश कर रहे हैं।
इस स्थिति में, आप सामान्य रनटाइम फ़ंक्शन की require
साथ मॉड्यूल आयात कर सकते हैं। हालांकि, यह any
प्रकार के रूप में देता है।
// The _ variable is of type any, so TypeScript will not perform any type checking.
const _: any = require('lodash');
टाइपस्क्रिप्ट 2.0 के रूप में, आप टाइपस्क्रिप्ट को यह बताने के लिए एक शॉर्टहैंड परिवेश मॉड्यूल घोषणा का भी उपयोग कर सकते हैं कि एक मॉड्यूल मौजूद है जब आपके पास मॉड्यूल के लिए एक प्रकार की परिभाषा फ़ाइल नहीं है। टाइपस्क्रिप्ट हालांकि इस मामले में कोई सार्थक टाइपकास्टिंग प्रदान करने में सक्षम नहीं होगा।
declare module "lodash";
// you can now import from lodash in any way you wish:
import { flatten } from "lodash";
import * as _ from "lodash";
टाइपस्क्रिप्ट 2.1 के रूप में, नियमों को आगे भी शिथिल किया गया है। अब, जब तक कोई मॉड्यूल आपके node_modules
निर्देशिका में मौजूद है, टाइपस्क्रिप्ट आपको इसे आयात करने की अनुमति देगा, यहां तक कि कहीं भी मॉड्यूल की घोषणा नहीं की जाएगी। (ध्यान दें कि --noImplicitAny
संकलक विकल्प का उपयोग करने पर, नीचे अभी भी एक चेतावनी उत्पन्न होगी।)
// Will work if `node_modules/someModule/index.js` exists, or if `node_modules/someModule/package.json` has a valid "main" entry point
import { foo } from "someModule";
परिभाषा फ़ाइलें ढूँढना
टाइपस्क्रिप्ट 2.x के लिए:
निश्चित रूप से निश्चित की गई परिभाषाएँ @types npm पैकेज के माध्यम से उपलब्ध हैं
npm i --save lodash
npm i --save-dev @types/lodash
लेकिन यदि आप अन्य रेपो से उपयोग के प्रकार चाहते हैं तो पुराने तरीके से उपयोग किया जा सकता है:
टाइपस्क्रिप्ट 1.x के लिए:
टाइपिंग एक एनपीएम पैकेज है जो स्वचालित रूप से स्थानीय प्रोजेक्ट में टाइप परिभाषा फ़ाइलों को स्थापित कर सकता है। मेरा सुझाव है कि आप क्विकस्टार्ट पढ़ें।
npm install -global typings
अब हम टाइपिंग क्लि तक पहुँच सकते हैं।
पहला कदम परियोजना द्वारा उपयोग किए जाने वाले पैकेज की खोज करना है
typings search lodash NAME SOURCE HOMEPAGE DESCRIPTION VERSIONS UPDATED lodash dt http://lodash.com/ 2 2016-07-20T00:13:09.000Z lodash global 1 2016-07-01T20:51:07.000Z lodash npm https://www.npmjs.com/package/lodash 1 2016-07-01T20:51:07.000Z
फिर तय करें कि आपको किस स्रोत से इंस्टॉल करना चाहिए। मैं dt का उपयोग करता हूं जो निश्चित रूप से एक GitHub रेपो के लिए खड़ा है जहां समुदाय टाइपिंग को संपादित कर सकता है, यह सामान्य रूप से सबसे हाल ही में अपडेट किया गया है।
टाइपिंग फ़ाइलें स्थापित करें
typings install dt~lodash --global --save
चलो आखिरी कमांड को तोड़ते हैं। हम अपनी परियोजना में एक ग्लोबल टाइपिंग फ़ाइल के रूप में लॉशटाइट के निश्चित संस्करण को स्थापित कर रहे हैं और इसे typings.json
में एक निर्भरता के रूप में typings.json
। typings.json
। अब हम जहाँ भी लॉश को आयात करते हैं, टाइपस्क्रिप्ट लॉज़ टाइपिंग फ़ाइल को लोड करेगा।
यदि हम टंकण स्थापित करना चाहते हैं, जिसका उपयोग केवल विकास पर्यावरण के लिए किया जाएगा, तो हम
--save-dev
ध्वज की आपूर्ति कर सकते हैं:typings install chai --save-dev
टाइपिंग के बिना वैश्विक बाहरी पुस्तकालयों का उपयोग करना
यद्यपि मॉड्यूल आदर्श होते हैं, यदि आप जिस लाइब्रेरी का उपयोग कर रहे हैं, उसे एक वैश्विक चर (जैसे $ या _) द्वारा संदर्भित किया जाता है, क्योंकि यह एक script
टैग द्वारा लोड किया गया था, तो आप इसे संदर्भित करने के लिए एक परिवेश घोषणा बना सकते हैं:
declare const _: any;
टाइपस्क्रिप्ट 2.x के साथ परिभाषा फ़ाइलों को ढूँढना
टाइपस्क्रिप्ट के 2.x संस्करणों के साथ, टाइपिंग अब npm @types रिपॉजिटरी से उपलब्ध हैं। ये स्वचालित रूप से टाइपस्क्रिप्ट कंपाइलर द्वारा हल किए जाते हैं और उपयोग करने के लिए बहुत सरल होते हैं।
एक प्रकार की परिभाषा को स्थापित करने के लिए आप इसे अपनी परियोजनाओं के पैकेज में देव निर्भरता के रूप में स्थापित करते हैं
जैसे
npm i -S lodash
npm i -D @types/lodash
स्थापित करने के बाद आप पहले की तरह मॉड्यूल का उपयोग करें
import * as _ from 'lodash'