2016-08-02 9 views
26

जावा से टीएस तक आ रहा है, मैंने आयातित प्रकार के आसपास {...} छोड़ा है।टाइपस्क्रिप्ट - आयात के बीच अंतर ... और आयात {...} (घुंघराले ब्रेसिज़ के साथ)

import DiscriminatorMappingData from './DiscriminatorMappingData'; 

import {DiscriminatorMappingData} from './DiscriminatorMappingData'; 

के बजाय

TypeScript - storing a class as a map value? देखें।

मैंने प्रलेखन पढ़ा है और बहुत कुछ नहीं समझा है। मैंने केवल यह लिया कि जब मुझे केवल फाइल से एक प्रकार की आवश्यकता होती है, तो मैं {} को छोड़ सकता हूं।
हालांकि, इससे अजीब त्रुटियां हुईं, जैसे "अज्ञात नाम", या अप्रत्याशित प्रकार असंगतताएं।

तो, क्या अंतर है, बस डालें?

उत्तर

28

आपके दो import घोषणाओं के बीच का अंतर टाइपस्क्रिप्ट विनिर्देश में शामिल है। §11.3.2, Import Declarations से:

रूप

import d from "mod";

का एक आयात घोषणा

import { default as d } from "mod";

इस प्रकार वास्तव में आयात घोषणा के बराबर है, तो आप ब्रेसिज़ को छोड़ देगा केवल जब आप कुछ ऐसा आयात कर रहे हैं जिसे मॉड्यूल की default इकाई के रूप में निर्यात किया गया था (export default घोषणा के साथ, जिसमें केवल प्रति मॉड्यूल ही हो सकता है)। import घोषणा में आपके द्वारा प्रदान किया गया नाम उस आयातित इकाई के लिए उपनाम बन जाता है।

कुछ और आयात करते समय, भले ही यह केवल एक इकाई है, आपको ब्रेसिज़ प्रदान करने की आवश्यकता है।

टाइपस्क्रिप्ट हैंडबुक के Default exports अनुभाग में कुछ उदाहरण हैं।

1

यह destructruring प्रारूप में आयात है। अनिवार्य रूप से उन सभी इकाइयों को समूहीकृत करना जिन्हें हम from एक परिभाषा फ़ाइल आयात करना चाहते हैं।

यदि आप अन्य प्रोग्रामिंग भाषाओं से परिचित हैं तो आप विनाशकारी धारणा से परिचित हो सकते हैं। वास्तव में es6 के हिस्से के रूप में assignments के रूप में destructuring जोड़ा गया था।

आयात पुनर्गठन समर्थन पहले टाइपस्क्रिप्ट में this Github ticket में सुझाया गया था लेकिन फिर this ticket के तहत समूहित किया गया था जो सभी es6 modules पर नज़र रखता था।

संबंधित मुद्दे