javascript - 无法获取属性值 'elementType' : object is null or undefined

标签 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 进行编译。

Compile Error. See error list for details tsc.js(19148, 13) Microsoft JScript runtime error: Unable to get value of the property 'elementType': object is null or 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()];
}

那么我做错了什么?

最佳答案

如果移动 dayNames 的定义之前self声明它编译得很好,所以看起来你正在调用 doSomething()之前dayNames被定义为。

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

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

关于javascript - 无法获取属性值 'elementType' : object is null or undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16298192/

相关文章:

javascript - DOM parentNode 和 parentElement 的区别

javascript - jquery切换只执行第一个条件

reactjs - 允许 typescript 编译器仅在一个 react ​​状态属性上调用 setState

javascript - 将输入值存储在 ionic Angular 为 5 的数组中

c - Visual Studio 命令提示符正在关闭

typescript - 我将如何测试在 Node.js 中使用命名空间的 Typescript 代码?

javascript - 提交后关闭弹出表单

javascript - 尝试根据 src 随机显示 4 张图像中的一张图像

visual-studio-2012 - 适用于 Visual Studio 2012 的 PhoneGap 模板

c++ - 如何修复此编译错误 : (compiler file 'f:\dd\vctools\compiler\cxxfe\sl\p1\c\template.cpp' , 行 22679)?