2012-11-26 29 views
5

एएमडी-अनुकूल टाइपस्क्रिप्ट एप्लिकेशन कंकाल को एक साथ रखने के प्रयास में, मैंने एक स्नैग में भाग लिया है: मैं अपने वर्तमान पथ से नीचे नहीं दिख सकता किसी अन्य निर्देशिका में एक मॉड्यूल आयात करने के लिए। मैं मॉड्यूल है कि ऊपर हैं आयात कर सकते हैं, लेकिन नीचे एक त्रुटि फेंकता है:वर्तमान पथ से कम पथ में स्थित टाइपस्क्रिप्ट मॉड्यूल आयात करना स्कोप त्रुटि

TypeScript Error: The name ''../core/View'' does not exist in the current scope

यहाँ मेरी (बहुत बुनियादी) ऐप्लिकेशन की संरचना है:

app/ 
- core/ 
    - View.ts 
- views/ 
    - HomeView.ts 
- Application.ts 

मेरी Application.ts फ़ाइल में, मैं यह कर सकते हैं सफलतापूर्वक तो जैसे एक मॉड्यूल आयात:

import HomeView = module('views/HomeView'); 

export class Application { 
    constructor() { 
     console.log('initializing Application'); 
    } 
} 

कौन सा है, जब --module एएमडी ध्वज का उपयोग कर, सही ढंग से आउटपुट

0,123,
define(["require", "exports", 'views/HomeView'], function(require, exports, __HomeView__) { 
    var HomeView = __HomeView__; 

    var Application = (function() { 
     function Application() { 
      console.log('initializing Application', HomeView); 
     } 
     return Application; 
    })(); 
    exports.Application = Application;  
}) 

अब, समस्या यह है कि जब मैं views/HomeView.js में कूद और मेरे core/View BaseClass आयात करने के लिए से विस्तार करने का प्रयास:

import View = module('../core/View'); 

export class HomeView { 
    constructor() { 
     console.log('Hello HomeView!'); 
    } 
} 

कौन सा यह पूरा त्रुटि फेंकता है:

TypeScript Error: The name ''../core/View'' does not exist in the current scope 
File: test/src/app/views/HomeView.ts 
Start: 21, Length: 14 

Line: import View = module('../core/View'); 
---------------------------^^^^^^^^^^^^^^-- 

यह एक है कंपाइलर में बग, या मॉड्यूल आयात की मेरी समझ दोषपूर्ण है? मैं views/HomeView आयात करने में सक्षम क्यों नहीं होगा, लेकिन ../core/View नहीं?

किसी भी मदद की सराहना की जाएगी।

उत्तर

5

मैं इसे रूट पथ का उपयोग करके काम करने में कामयाब रहा - हालांकि मैं आपको नहीं बता सकता कि आपका सापेक्ष पथ क्यों काम नहीं करता है।

import view = module("./app/core/View"); 
+6

मैंने लगभग एक ही फिक्स का उपयोग किया है। पथ हमेशा रूट क्लास (यानी, क्लास जो पहले मॉड्यूल को लोड करता है) से संबंधित होते हैं, इसलिए उस जानकारी के लिए View.ts को हमेशा 'मॉड्यूल ("कोर/व्यू") ' – JcFx

+0

+1 के माध्यम से एक्सेस किया जा सकता है - धन्यवाद! – Fenton

+0

वाह --- कभी-कभी आप सबसे स्पष्ट चीजों को याद करते हैं :) – cnp