【问题标题】:Typescript compilation error with Arrays数组的打字稿编译错误
【发布时间】:2013-02-21 12:44:59
【问题描述】:

有两个打字稿文件:

  • 实现类 Client 的模块

export class Client {
  • 导入模块并创建客户端数组的主文件

import c = module("client")
//...
class Server {
    constructor() {
        this.clients = new c.Client[];

编译代码似乎工作正常。但是当我尝试使用 nodejs 运行生成的 javascript 时,它抱怨存在语法错误:

this.clients = new ();

在客户端也有打字稿代码。但是我没有使用模块,而是使用声明路径和 --out 编译器标志将所有内容编译到一个 .js 文件中。客户端代码中的数组创建没有问题。在javascript中有

this.arr = new Array();

很明显,编译器只是忘记添加指定使用new() 创建的数组。我通过插入缺失的部分手动修复了错误。但是在对代码稍作改动并重新编译后,同样的问题又出现了。 我正在使用 typescript 版本 0.8.3 并通过 npm 安装。我能做些什么 ?

【问题讨论】:

    标签: javascript node.js compiler-construction typescript npm


    【解决方案1】:

    我假设您的类 Server 将客户端定义为 c.Client 对象的数组,因此它实际上看起来像这样:

    class Server {
        clients: c.Client[];
        constructor() {
            this.clients = new c.Client[];
        }
    }
    

    我不确定为什么要编译这段代码,因为它实际上是一个语法错误。它不适合我。

    您混合了两种不同的方式来声明一个数组:new Array()[]。只需将您的行改为此,您就可以开始了:

    this.clients = [];
    

    【讨论】:

    • 有趣。在客户端,完全相同的代码运行良好。因此我总是假设语法是有效的。不幸的是,该解决方案要么揭示了要么创造了一个新问题。好吧,这不是这个问题的范围,我很乐意接受你的回答。由我 +1
    猜你喜欢
    • 2017-06-26
    • 2016-09-09
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多