【问题标题】:Typescript error TS1005: ';' expected but I don't see where I'm missing a semicolon打字稿错误 TS1005:';'预期,但我没有看到我缺少分号的地方
【发布时间】:2017-06-12 01:34:08
【问题描述】:

我正在尝试学习 Typescript,我正在关注此页面上的教程:https://www.typescriptlang.org/docs/handbook/functions.html。当我创建一个文件 cardPicker.ts 并粘贴以下代码时,它不会编译。我收到此错误 5 次:Typescript error TS1005: ';'预期的。第 1、6、7、14 和 15 行。我没有看到缺少分号的位置,但错误消息可能意味着其他内容。我担心我的 ts 版本,但我两周前才安装。当我执行“tsc -version”时,它会显示 1.0.3.0

let deck = {
  suits: ["hearts", "spades", "clubs", "diamonds"],
  cards: Array(52),
  createCardPicker: function() {
     return function() {
         let pickedCard = Math.floor(Math.random() * 52);
         let pickedSuit = Math.floor(pickedCard / 13);

         return {suit: this.suits[pickedSuit], card: pickedCard % 13};
     }
  }
}

let cardPicker = deck.createCardPicker();
let pickedCard = cardPicker();

alert("card: " + pickedCard.card + " of " + pickedCard.suit);

我通过在命令行中运行“tsc cardPicker.ts”来编译项目。

【问题讨论】:

  • 你最好更新你的打字稿版本。当前版本是2.1.5,您使用的是1.0.3
  • 为什么 npm 会安装旧版本?我两周前刚接触这个。我无法更新它。
  • 除非 typescript 以另一种方式进入我的电脑......呃
  • 你是怎么安装的?也许您不久前已经在全球范围内安装了旧版本(或者您正在使用的东西)。那么您可能已经在本地安装了新版本。试试./node_modules/typescript/bin/tsc -v
  • createCardPicker 中的 return 语句缺少分号。 return function() { .... } 应更改为 return function() { .... };。此外,变量声明语句let deck = { .... } 缺少分号。应该是let deck = { .... };

标签: typescript


【解决方案1】:

JSON 可能缺少花括号。

例如,添加两个注释行可以修复错误。

const myObject =
[
  {
    'id': '123',
    'person': [
      {   // MISSING BRACE
        'name': 'SushiGuy',
        'age': '99',
      }   // MISSING BRACE
    ]
  }
];

【讨论】:

    【解决方案2】:

    我遇到过这个问题。这可能是由于 Angular 版本和 TypeScript 版本不匹配而发生的。所以只需按照以下步骤操作

    1. 步骤 01 - 为 Visual Studio 2015 安装 TypeScript

      • TypeScript for Visual Studio 2015
      • 安装前检查是否已经安装(检查路径 C:\Program Files(x86)\Microsoft SDKs\TypeScript) 如果存在,则删除 它。
      • 然后安装它,它将位于 C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.2
      • 然后使用路径变量设置 TypeScript 的路径(设置为 C:\Program Files (x86)\Microsoft SDKs\TypeScript\3.2)
    2. 步骤 02 - 使用以下命令安装最新的 Angular 版本(Angular 7)

      • npm install -g @angular/cli
      • npm install -g @angular/core
    3. 步骤 03 - 使用以下命令检查 TypeScript 版本

    【讨论】:

      【解决方案3】:

      我遇到了这个非常奇怪的错误,类似这样的错误:

      我花了一点时间才意识到路径被复制了

      src/app/services/ 嵌套在 src/app/services/MYPROJECT 中。这是由于代码生成中的路径错误,我没有注意到额外的文件。

      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(972,19): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(974,10): error TS1128: Declaration or statement expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(975,17): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(976,17): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(977,24): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(978,17): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(986,4): error TS1128: Declaration or statement expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(987,24): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(988,20): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(989,13): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(990,13): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(991,25): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(992,15): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(993,21): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(994,20): error TS1005: ';' expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(996,6): error TS1128: Declaration or statement expected.
      src/app/services/MYPROJECT.NG/src/app/services/api/rr.api.ts(997,14): error TS1005: ';' expected.
      

      【讨论】:

      • src/app/services/ was nested inside src/app/services/MYPROJECT”到底是什么意思?如果您的错误列表,我会看到它,但是您是如何进入该状态的?它代表什么?你是怎么解决的?
      【解决方案4】:

      当你安装 tsc 时,可能你使用了npm install tsc -g

      点击此链接: https://www.npmjs.com/package/tsc 这个包停产了。

      现在您应该使用npm install typescript -g,然后您将拥有更新的版本。

      今天tsc -v返回2.8.1版本

      使用较新的版本,您不会获得 ts1005

      【讨论】:

        【解决方案5】:

        我今天花了几个小时在 LESS 预处理器中寻找类似的问题(我的错误是关于逗号字符)。

         error TS1005: ',' expected
        

        最后,我的 LESS 文件中的 cmets 中有一些反引号字符,它们混淆了预处理器(也许它是用 TypeScript -Angular 5 项目编写的,其中反引号有特殊处理)

        【讨论】:

          【解决方案6】:

          嘿@Kelli 我遇到了同样的错误,但我解决了。如果您使用 Visual Studio,请在 Visual Studio Code 中复制您的代码并选择语言作为打字稿。在您缩进代码并正确添加左括号和右括号,添加分号后,您会在拼写错误的地方变红。

          【讨论】:

            【解决方案7】:

            这是您的 ts 文件中的所有内容吗?或者你那里也有一些参考cmets?

            该错误不会抱怨缺少分号,因为 TypeScript 根本不需要您使用它们,就像 JS 在这方面一样。

            您得到的错误是因为其他一些东西对编译器没有意义,比如没有正确结束的声明。 (见https://github.com/DefinitelyTyped/DefinitelyTyped/issues/4004)。例如:

            let deck: Number of Date;
            

            会产生那个确切的错误。

            根据您的设置,您编译的内容可能比您想象的要多。

            在您的情况下,由于您的编译器太旧,可能只是它不理解 TS 1.4 中引入的关键字let

            更新

            为了澄清,您用于安装 typescript 的命令是最新安装的。 但是为了使用它,你需要运行 node.js 命令提示符而不是正常的 Windows 命令提示符,假设你在 Windows 上。

            【讨论】:

            • 使用 node.js 命令提示符解决了我的问题,因为它使用了正确版本的 typescript,位于我的 AppData\Roaming\npm\node_modules\typescript 文件夹中
            猜你喜欢
            • 1970-01-01
            • 2023-03-25
            • 2013-08-20
            • 2018-03-06
            • 1970-01-01
            • 2016-01-11
            • 1970-01-01
            • 1970-01-01
            • 2019-05-09
            相关资源
            最近更新 更多