我在 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/