2012-11-26 15 views
5

AMD'ye uygun bir TypeScript uygulama iskeletini bir araya getirme girişimi olarak, bir taklitle karşılaştım: Şu anki yolumdan düşüyor gibi görünmüyor Başka bir dizinde bir modülü almak. Ben üzerindedir modülleri içe ama aşağıda bir hata atar edebilirsiniz: İşteGeçerli yoldan daha düşük olan yolun içinde bulunan TypeScript Module'i içe aktarır. Scope Error

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

benim (çok temel) uygulamanın yapısı şöyledir: Benim Application.ts dosyasında

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

, yapabilirim başarıyla şöyle bir modül içe: --module AMD bayrağını kullanırken

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

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

hangisi, doğru

çıkarır

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'); 
---------------------------^^^^^^^^^^^^^^-- 

bu midir: Bu komple hatayı atar

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

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

: Ben views/HomeView.js içine atlamak ve uzaması için benim core/View AnaSınıf almaya çalıştığınızda Şimdi

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;  
}) 
, sorundur Derleyicide hata mı, yoksa modül ithalatı konusundaki anlayışım yanlış mı? Neden views/HomeView'u içe aktarabiliyordum, ancak ../core/View değil?

Herhangi bir yardım büyük memnuniyetle karşılanacaktır.

cevap

5

Kök yolu kullanarak çalışmayı başardım - göreceli yolunuzun neden çalışmadığını size söyleyemem.

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

Neredeyse aynı düzeltmeyi kullandım. Yollar her zaman kök sınıfına göre (yani, birinci modülü yükleyen sınıf), bu nedenle View.ts her zaman bu bilgi için 'modül ("çekirdek/Görünüm") ' – JcFx

+0

+1 üzerinden erişilebilir - teşekkürler! – Fenton

+0

Vay canına --- bazen en bariz şeyleri özlüyorum :) – cnp