2013-03-06 8 views
0

Есть два машинопись файлов:Машинопись ошибки компиляции с массивами

  • модуля, который реализует класс клиенту

export class Client { 
  • основной файл, который импортирует модуль и создает массив клиентов

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

Компиляция кода, кажется, работает хорошо. Но когда я пытаюсь запустить сгенерированный JavaScript с nodejs, он жалуется, что есть ошибка синтаксиса:

this.clients = new(); 

На стороне клиента есть машинопись код тоже. Но вместо модулей я использую пути декларации и флаг -out компилятора, чтобы скомпилировать все в один .js-файл. Массивы в клиентском коде создаются без проблем. В JavaScript есть

this.arr = new Array(); 

Так, очевидно, что компилятор просто забыл добавить указать, что массив создается с new(). Я исправил ошибку вручную, просто вставив недостающую часть. Но после небольшого изменения кода и новой компиляции эта проблема снова возникла. Я использую машинописную версию 0.8.3 и установлен через npm. Что я могу сделать ?

ответ

3

Я полагаю, ваш класс сервер определяет клиентов, чтобы быть массивом объектов c.Client так это на самом деле выглядит следующим образом:

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

Я не знаю, почему этот код скомпилирован на все, потому что это на самом деле синтаксис ошибка. Он не компилируется для меня.

Вы перепутали два разных способа объявить массив: новый массив() и []. Просто измените свою линию на это, и вам должно быть хорошо идти:

this.clients = []; 
+0

интересно. на стороне клиента точно такой же код работал нормально. Поэтому я всегда предполагал, что синтаксис действителен. К сожалению, решение выявило или создало новую проблему. Ну, это не вопрос этого вопроса, и я с радостью принимаю ваш ответ. +1 от меня – lhk

Смежные вопросы