2013-06-27 6 views
5

मैंने एक .ts फ़ाइल में एक चर बनाया है जिसमें कोई मॉड्यूल या क्लास नहीं है। यह ज्यादातर एक सादा जावास्क्रिप्ट फ़ाइल की तरह दिखता है। मैं चाहता हूं कि यह वैरिएबल एक वर्ग के अंदर किसी अन्य .ts फ़ाइल में पहुंच योग्य हो जो एक चर के अंदर है।टाइपस्क्रिप्ट वैश्विक चरणीय फाइलों में

इसलिए उदाहरण के लिए मेरे पास है:

foo.ts

var foo = "some stuff"; 

bar.ts

module Bar { 
    export class BarClass { 
     function getFoo() { 
      return foo; 
     } 
    } 
} 

मुझे यकीन है कि यह करने के लिए सबसे अच्छा तरीका है नहीं कर रहा हूँ यह। मैंने windows.bar ग्लोबल का उपयोग करने का प्रयास किया है लेकिन यह काम नहीं कर रहा है। मैं टाइपस्क्रिप्ट को एक बड़े कोडबेस में कूदने के लिए नया हूं इसलिए कृपया मुझे बताएं कि आपको किसी भी चीज़ पर और स्पष्टीकरण की आवश्यकता है।

धन्यवाद!

उत्तर

8

टाइपस्क्रिप्ट फ़ाइलों को अन्य टाइपस्क्रिप्ट फ़ाइलों में किए गए किसी भी चीज़ के बारे में पता नहीं है जब तक कि उनके पास उनका संदर्भ न हो। तो bar.ts के शीर्ष पर आप एक लाइन

/// <reference path="foo.ts" /> 
+2

क्या मुझे 'var foo घोषित करना होगा: कोई भी;' भी? – Nolski

+1

नहीं। घोषणा करें कि कंपाइलर को आश्वस्त करने के लिए कि कुछ अस्तित्व में है, यह अन्यथा नहीं जानता है। आमतौर पर किसी तृतीय पक्ष लाइब्रेरी द्वारा लोड किया जाता है। कंपाइलर foo के बारे में पता चलेगा क्योंकि इसमें फ़ाइल के संदर्भ में इसका संदर्भ होगा। –

+0

बहुत बढ़िया। इस जवाब ने मेरे लिए बहुत सारी समस्याओं को दूर करने में मदद की। धन्यवाद! – Nolski

0
अपने प्रश्न से

, यकीन नहीं अगर यह एक संकलन, आईडीई या क्रम मुद्दा यह है कि आप था होना चाहिए। फिर भी, सोचा कि मैं ग्लोबल्स के साथ इन मुद्दों में से कुछ से बचने के लिए यह एक अच्छा तरीका साझा करना चाहता हूं, अपनी खुद की "प्रकार" फ़ाइल बनाना और इसे में अपनी typeRoots संपत्ति में सूचीबद्ध करना है।

उदाहरण के लिए, मैंने अतीत में जो कुछ किया है वह console.log के लिए एक शॉर्टकट बनाता है जो मेरी इच्छा की शैली के साथ संदेशों को रंग देता है। इसलिए जैसा ...

const pretty = (style: string, ...anything) => { 
    anything.forEach(something => 
    console.log(`%c ${something} `, style)); 
    return moment().format('[Logged @] HH:MM:SS'); 
} 

तो मैं हर में declare var pretty की जरूरत नहीं है फ़ाइल मैं इसका इस्तेमाल टी एस, मैं अपने tsconfig.json में

... 
declare function pretty(style: string, ...anything); 
... 

और फिर बनाएंगे

{ 
    "compilerOptions": { 
    ... 
    "typeRoots": ["src/myTypes"] 

तो, आपके मामले में, अगर foo एक वर है कि आप क्रम आप बस declare var foo: string; अपने प्रकार में दायर कर सकूं में होगा पता है, यह सूची आपके typeRoots और प्रयोग में था यह बिना किसी और कॉन्फ़िगरेशन के आपकी सभी प्रोजेक्ट फ़ाइलों में खुशी से।

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