TypeScript编译器错误:预期';'要么 ']'

时间:2015-05-19 01:09:19

标签: visual-studio typescript web-essentials

这是VS 2013中的一个节点项目,安装了TypeScript工具和Web Essential(但没有Resharper)。我正在将我的javascript转换为打字稿,似乎进展顺利。但是,我在错误列表中遇到了很多错误,如

Error   1   Expected ';'    C:\Azure\public\js\prototypes.ts    6   11  
Error   2   Expected ',' or ']' C:\Azure\public\js\prototypes.ts    7   13  
Error   3   Expected ';'    C:\Azure\public\js\prototypes.ts    7   22  
Error   4   Expected ','    C:\Azure\public\js\prototypes.ts    13  30  
Error   5   Expected '{'    C:\Azure\public\js\prototypes.ts    13  40  
Error   6   Expected ';'    C:\Azure\public\js\prototypes.ts    13  49  

以下是prototypes.js的前几行:

/// <reference path="../../typings/moment/moment.d.ts" />
'use strict';
//-------------------------------------------------
// Math
//-------------------------------------------------
interface Math {
    lg(value: number): number;
    roundUp(value: number, digits: number): number;
    roundDown(value: number, digits: number): number;
}

if (!Math.lg) {
    Math.lg = function (value: number) : number {
        return Math.log(value) / Math.LN10;
    };
}
if (!Math.roundUp) {
    Math.roundUp = function (value, digits) {
        var factor = Math.pow(10, Math.floor(Math.lg(Math.abs(value))) - digits || 0);
        return Math.ceil(value / factor) * factor;
    };
}
if (!Math.roundDown) {
    Math.roundDown = function (value, digits) {
        var factor = Math.pow(10, Math.floor(Math.lg(Math.abs(value))) - digits || 1);
        return Math.floor(value / factor) * factor;
    };
}

奇怪的是,即使错误列表中存在这些错误,构建成功并且应用程序似乎运行正常。我还尝试卸载WebEssential和TypeScript工具,然后重新安装它们,但没有区别。

抱怨什么?

更新:

当我看到1.5Beta时,我立即安装了它。令我失望的是,我得到了更多错误。然后,我决定回滚到1.4。但更糟糕的是......现在,当我打开相同的项目时,它会抱怨

  

您的项目文件使用不同版本的TypeScript   编译器和工具,而不是当前在此计算机上安装的。没有   编译器在C:\ Program Files(x86)\ Microsoft中找到   软件开发工具包\打字稿\ 1.4 \ 1.4 \ tsc.exe。您可以解决此问题   通过更改项目中的<TypeScriptToolsVersion>元素   文件。

我不知道为什么路径现在有额外的\ 1.4。另外,我在项目文件中找不到<TypeScriptToolsVersion>元素。我到处搜索(包括注册表),找不到像\ 1.4 \ 1.4那样的路径。它现在正成为我的TypeScript噩梦。

1 个答案:

答案 0 :(得分:0)

  

即使错误列表中存在这些错误,构建也会成功,应用程序似乎运行正常。

在存在类型错误的情况下,TypeScript不会阻止.js emit / build。这是为了使您更容易将js代码迁移到ts。

那就是说,您发布的代码也可以正常工作:

tested in atom typescript