2012-11-26 28 views
5

Trong nỗ lực kết hợp bộ khung ứng dụng TypeScript thân thiện với AMD, tôi đã gặp phải một lỗi: Tôi dường như không rơi xuống từ đường dẫn hiện tại của mình để nhập một mô-đun vào một thư mục khác. Tôi có thể nhập module ở trên trời, nhưng bên dưới ném một lỗi:Nhập Mô-đun TypeScript nằm trong đường dẫn thấp hơn đường dẫn hiện tại ném Lỗi Phạm vi

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

Dưới đây là cấu trúc của (rất cơ bản) của tôi ứng dụng:

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

Trong file Application.ts của tôi, tôi có thể nhập thành công một mô-đun như vậy:

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

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

trong đó, khi sử dụng --module AMD cờ, một cách chính xác kết quả đầu ra

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;  
}) 

Bây giờ, vấn đề là khi tôi nhảy vào views/HomeView.js và cố gắng để nhập core/View BaseClass của tôi để mở rộng từ:

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

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

nào ném lỗi hoàn chỉnh này:

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

Là một này lỗi trong trình biên dịch, hoặc là sự hiểu biết của tôi về nhập khẩu mô-đun bị lỗi? Tại sao tôi có thể nhập views/HomeView, nhưng không thể nhập ../core/View?

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

5

Tôi đã cố gắng làm việc này bằng cách sử dụng đường dẫn gốc - mặc dù tôi không thể cho bạn biết tại sao đường dẫn tương đối của bạn không hoạt động.

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

Tôi đã sử dụng gần như cùng một sửa chữa. Đường dẫn luôn luôn liên quan đến lớp gốc (có nghĩa là, lớp đã nạp mô-đun đầu tiên), vì vậy View.ts luôn có thể được truy cập thông qua 'module (" core/View ")' – JcFx

+0

+1 cho thông tin đó - cảm ơn! – Fenton

+0

Wow --- đôi khi bạn bỏ lỡ những điều rõ ràng nhất :) – cnp

Các vấn đề liên quan