无法获取属性'elementType'的值:object为null或undefined

时间:2013-04-30 10:57:43

标签: 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 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':object为null或undefined

奇怪的是,相同的代码似乎在TypeScript playground上编译得很好。我检查了 C:\ Program Files(x86)\ Microsoft SDKs \ 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()];
}

那么我做错了什么?

2 个答案:

答案 0 :(得分:3)

如果您在dayNames声明之前移动self的定义,那么它会很好地编译,因此在定义doSomething()之前,您似乎正在调用dayNames

为什么会出现这种情况,为什么它不会产生更有用的编译错误我不确定 - 我会把它归结为TypeScript仍然是alpha代码。您可能希望将其作为CodePlex上的问题提出。

我注意到了其他一些这样的例子。例如,如果你有一个类在同一个文件中扩展另一个类,你需要先放基类,否则编译器有时会失败。

答案 1 :(得分:1)

更新为TypeScript 0.9.0后,似乎已解决此问题。