Javascript 无法获取属性的值';elementType';:对象为null或未定义

Javascript 无法获取属性的值';elementType';:对象为null或未定义,javascript,visual-studio-2012,typescript,web-essentials,Javascript,Visual Studio 2012,Typescript,Web Essentials,我在TypeScript文件中有以下代码: define('myModule', [], function () { var self = { init: function () { doSomething(); } }; var dayNames:string[] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; function doSomet

我在TypeScript文件中有以下代码:

define('myModule', [], function () {

    var self = {
        init: function () {
            doSomething();
        }
    };

    var dayNames:string[] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

    function doSomething () {
        var current = new Date();
        var day = dayNames[current.getDay()];
    }

    return self;
});
但是,它不使用Visual Studio 2012/Web Essentials 2012进行编译

编译错误。详见错误列表tsc.js(19148,13) Microsoft JScript运行时错误:无法获取属性的值 “elementType”:对象为null或未定义

奇怪的是,同样的代码似乎在计算机上编译得很好。我已经检查了C:\Program Files(x86)\Microsoft SDK\TypeScript\tsc.js的版本,这是CodePlex(0.8.3.0)上的最新版本

如果我注释掉以下行,它编译得很好:

var day = dayNames[current.getDay()];
var dayNames:string[] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

function doSomething () {
    var current = new Date();
    var day = dayNames[current.getDay()];
}
以下代码块也可以单独编译:

var day = dayNames[current.getDay()];
var dayNames:string[] = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];

function doSomething () {
    var current = new Date();
    var day = dayNames[current.getDay()];
}

那么我做错了什么呢?

如果将
日名的定义移动到
self
声明之前,它编译得很好,因此在定义
dayNames
之前,您似乎正在调用
doSomething()

为什么会出现这种情况,为什么它不会生成一个更有用的编译器错误,我不确定——我认为这是因为TypeScript仍然是alpha代码。你可能想把它作为一个问题提出来


我注意到了其他一些类似的例子。例如,如果在同一个文件中有一个类扩展了另一个类,则需要将基类放在第一位,否则编译器有时会出错。

如果将
日名的定义移动到
自我
声明之前,它编译得很好,因此看起来您正在调用
doSomething()
在定义日期名称之前

为什么会出现这种情况,为什么它不会生成一个更有用的编译器错误,我不确定——我认为这是因为TypeScript仍然是alpha代码。你可能想把它作为一个问题提出来


我注意到了其他一些类似的例子。例如,如果在同一文件中有一个类扩展了另一个类,则需要将基类放在第一位,否则编译器有时会崩溃。

这似乎是在更新到后解决的。

这似乎是在更新到后解决的。

编译的是。期待解释!其他人可能有一个,但不幸的是我没有。+1,就像JcFx说的self依赖于doSomething,而doSomething依赖于日名。所以我会把dayNames->doSomething->self。但是dayname->self->doSomething也可以,这很好,但是我们真的需要根据这样的依赖关系来排序代码吗?这似乎是编译器的一个严重限制,也是生产率/维护(该语言旨在改进)方面的一个倒退。已经提出了这个问题。是的,编译。期待解释!其他人可能有一个,但不幸的是我没有。+1,就像JcFx说的self依赖于doSomething,而doSomething依赖于日名。所以我会把dayNames->doSomething->self。但是dayname->self->doSomething也可以,这很好,但是我们真的需要根据这样的依赖关系来排序代码吗?这似乎是编译器的一个严重限制,也是生产率/维护(该语言旨在改进)方面的一个倒退。他们提出了这个问题。