2014-06-27 12 views
9

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

interface Parent { 
    children: Child[] 
} 

interface Child { 
    parent: Parent 
} 
+2

मैं व्यक्तिगत रूप से उन्हें एक ही फाइल में डाल दिया है क्योंकि वे inextricably जुड़े हुए हैं और दोनों संकलन के दौरान मिट रहे हैं। – Fenton

उत्तर

8

नीचे दो समाधान। मैं उत्तरार्द्ध पसंद करते हैं क्योंकि यह नोड जे एस मॉड्यूल के साथ स्वच्छ interfacing प्रदान करता है, लेकिन दुर्भाग्य से मेरी आईडीई के रूप में ज्यादा मैं क्या के रूप में यह पसंद नहीं करता (अभी तक) ...

उपयोग संदर्भ

एक definitions.d.ts फ़ाइल बनाएँ कि केवल, definitions.d.ts फ़ाइल अपनी कक्षाओं/इंटरफेस

/// <reference path="Parent.ts" /> 
/// <reference path="Child.ts" /> 

Parent.ts में और Child.ts, एक भी संदर्भ के लिए बात करने के लिए संदर्भ में शामिल होंगे

/// <reference path="definitions.d.ts" /> 

आयात का प्रयोग करें ... आवश्यकता

tsc को --module commonjs ध्वज पारित तो import क्या आप require और export क्या आप को बेनकाब करने के

Parent.ts में

import Child = require('Child') 

interface Parent { 
    children: Child[] 
} 

export = Parent 

चाहते Child.ts

में +०१२३७५१६६७३

कृपया ध्यान दें कि आप require

संपादित Sept 2016

अब यह ES6 शैली आयात का उपयोग करने के लिए बेहतर है में एक्सटेंशन '.ts' निर्दिष्ट नहीं करते हैं (और डिफ़ॉल्ट निर्यात बचने के लिए):

Parent.ts

import { Child } from './Child' 

export interface Parent { 
    children: Child[] 
} 

Child.ts

import { Parent } from './Parent' 

export interface Child { 
    parent: Parent 
}