2013-03-16 54 views
11

Neyi yanlış yaptığımı anlamıyorum. Ben VS2012 bir typescript projesi oluşturmak ettik ve "Fizik" adlı bir alt dizinde "Vector.ts" adlı bir dosya oluşturdu: AyrıcaTypeScript - Modül çalışma zamanında tanımsız

// Module 
module Physics { 

    // Class 
    export class Vector { 
     constructor(public x: number) { } 
    } 

} 

, şu app.ts dosya var:

/// <reference path="Physics/Vector.ts" /> 

window.onload =() => { 
    var vector = new Physics.Vector(6); 
}; 

proje başarıyla derlenmiş, ancak bunu başlattığımızda, ben şu istisna olsun: ... Ben yanlış yapıyorum anlamadım

0x800a1391 - JavaScript runtime error: 'Physics' is undefined

Teşekkürler.

cevap

5

AMD stili modüllerini Require.Js gibi bir modül yükleyici ile kullanıyorsanız, bir içe aktarım deyimine sahip olmanız gerekir. Kodunuz gibi bir şey olacaktır https://stackoverflow.com/a/14919495/1014822: Burada Steve'in kabul yanıta bakın

import Physics = module("Physics/Vector"); 

var vector = new Physics.Vector(6); 

... ve bu gerekmez: Bir modül yükleyici kullanmıyorsanız /// <reference path="Physics/Vector.ts" />

, sadece gereken html sayfanızda bir yere Vector.js çıktı dosyasını eklediğinizden emin olun ve uygulama dosyanızın öncesinde yüklendiğinden emin olun. Bu durumda, çalışmak için modülün nerede olduğunu bulmak için TS'ye /// <reference path="Physics/Vector.ts" /> kullanın.

+0

Cevabınız için teşekkürler. Vector.js dosyamın uygulama.js'den önce yüklendiğinden nasıl emin olabilirim? – gipouf

+0

Sadece bu konuda güzel bir öğretici buldu - http://blorkfish.wordpress.com/2012/10/23/typescript-organizing-your-code-with-amd-modules-and-require-js/. – gipouf

1

Eğer System kullanıyorsanız Sadece şeyiyle ardından kullanmak istiyorum importfunction:

System.import("Physics/Vector"); 

Eğer Angular 2 için yapıyoruz o zaman bootstrapimport önce bunu yapmak istiyor olsaydın

İlgili konular