Почему мой код застревает при создании экземпляра класса в Typescript?

Я анализирую строку для некоторых данных, а затем создаю объекты из этих данных. Я могу нормально анализировать данные, но по какой-то причине мой код останавливается, когда я пытаюсь создать новый объект? Подозреваю, что делаю это неправильно, вот мой код:

Это мой класс даты чтения:

class ReadingDate {
year: number;
month: number;
day: number;
hour: number;
minute: number;
second: number;

public constructor(y: number, m: number,
                 d: number, h: number,
                 min: number, s: number) {
  this.year = y;
  this.month = m;
  this.day = d;
  this.hour = h;
  this.minute = min;
  this.second = s;
}

public toString() : string{
    return (this.year+"-"+this.month+"-"+this.day+" "+this.hour+":"+this.minute+":"+this.second);
  }
 }

А вот фрагмент кода, в котором я пытаюсь создать новый ReadingDate в другом классе:

static parseDate(date: string){
  console.info("parsing date"); // this prints fine
  let array = date.split(" ", 2);
  let dateArray = array[0].split("-", 3);
  let timeArray = array[1].split(":", 3);
  console.info("numbers \n1: " + parseInt(dateArray[0]) +" type: " + typeof(parseInt(dateArray[0]))
    +"\n2: " + parseInt(dateArray[1]) + " type: " + typeof(parseInt(dateArray[1]))
    +"\n3: " + parseInt(dateArray[2]) + " type: " + typeof(parseInt(dateArray[2]))
    +"\n4: " + parseInt(timeArray[0]) + " type: " + typeof(parseInt(timeArray[0]))
    +"\n5: " + parseInt(timeArray[1]) + " type: " + typeof(parseInt(timeArray[1]))
    +"\n6: " + parseInt(timeArray[2]) + " type: " + typeof(parseInt(dateArray[2]))
 );
  console.info("parsed date"); // this prints fine
  var parsedDate = new ReadingDate(
    parseInt(dateArray[0]),
    parseInt(dateArray[1]),
    parseInt(dateArray[2]),
    parseInt(timeArray[0]),
    parseInt(timeArray[1]),
    parseInt(timeArray[2])
  );
  console.info("reached here"); //this never prints
  console.info("newlyParsedDate: "+ parsedDate.toString()); //this never prints
  return parsedDate; //this never happens
}

А вот пример того, как я вызываю parseDate ():

static parseReading(reading: string) {
    console.info("inparser: "+reading);
    let array = reading.split(",", 4);
    let date = ParserProvider.parseDate(array[0]);
    console.info("finished parsing date"); //this does not print and nothing past it happens
    let location = array[1];
    let val = array[2]==1?true:false;
    let battery = array[3];
    console.info("inparser: "+location,val,battery); //does not print

}

Для примера с датой «2018-10-16 10:32:02» вывод консоли выглядит следующим образом:

parser.ts:17 inparser: 2018-10-16 10:41:22,living,1,16
parser.ts:31 parsing date
parser.ts:33 2018-10-16
parser.ts:34 10:32:02
parser.ts:37 parsed date
parser.ts:38 numbers 
             1: 2018 type: number
             2: 10 type: number
             3: 16 type: number
             4: 10 type: number
             5: 32 type: number
             6: 2 type: number

Это не дает мне никаких ошибок, но моя программа, кажется, просто перестает что-либо делать после того, как я пытаюсь создать объект ReadingDate.

Заранее спасибо за помощь!

Обновлено: обновлено методом toString

Обновлено еще раз: обновлено примером вызова parseDate, некоторыми дополнительными console.infos и выводом консоли при его вызове

РЕДАКТИРОВАТЬ 3: Хорошо, поэтому, когда я пытаюсь / уловить, где я пытаюсь сделать объект следующим образом:

try{var parsedDate = new ReadingDate(
      parseInt(dateArray[0]),
      parseInt(dateArray[1]),
      parseInt(dateArray[2]),
      parseInt(timeArray[0]),
      parseInt(timeArray[1]),
      parseInt(timeArray[2])
      );}
catch(error){console.info(error);}

Я получаю такую ​​ошибку:

ReferenceError: ReadingDate is not defined
at Function.webpackJsonp.197.ParserProvider.parseDate (VM14753 main.js:300)
at Function.webpackJsonp.197.ParserProvider.parseReading (VM14753 main.js:276)
at HomePage.webpackJsonp.195.HomePage.handleReading (VM14753 main.js:146)
at VM14753 main.js:141
at VM14752 vendor.js:75337
at Array.forEach (<anonymous>)
at Events.publish (VM14752 vendor.js:75336)
at ClientImpl.MqttProvider.onMessageArrived (VM14753 main.js:228)
at ClientImpl.LibraryFactory.ClientImpl._receiveMessage (VM14750 paho-mqtt.js:1502)
at ClientImpl.LibraryFactory.ClientImpl._receivePublish (VM14750 paho-mqtt.js:1477)

РЕДАКТИРОВАТЬ 4: Исправлено! См. Мой ответ ниже и обратитесь к этому вопросу StackOverflow здесь

Так является ли parseDate() методом класса ReadingDate? Для конструктора предполагается общедоступный, и его следует удалить. Я верю, что вы столкнетесь с некоторыми другими проблемами, связанными с ценностями, но начните с этого. Вы понимаете, что существует метод, который предоставляет все эти значения без вашего анализа?

Randy Casburn 15.10.2018 16:11

PS вы могли бы просто: constructor(public year: number, ...), тогда вам не нужно объявлять, передавать и назначать

Jonas Wilms 15.10.2018 16:14

Если вы пытаетесь создать экземпляр ReadingDate, выполнили ли вы сначала console.info(parseInt(dataArray[0])) и т. д., Чтобы убедиться, что каждый элемент массива будет передавать ожидаемые значения? Все ли они настроены так, как ожидалось?

bilpor 15.10.2018 16:16

Реализует ли ReadingDate toString ()?

HermanTheGermanHesse 15.10.2018 17:25

@HermanTheGermanHesse да, дата чтения реализует toString ()

Maegz 15.10.2018 22:37

@Maegz, не могли бы вы обновить свой вопрос реализацией?

HermanTheGermanHesse 15.10.2018 23:10

@RandyCasburn parseData - это метод другого класса, которого нет в ReadingDate

Maegz 15.10.2018 23:11

@bilpor Да, я проверил значения и их типы, и все они соответствуют ожиданиям

Maegz 15.10.2018 23:12

@HermanTheGermanHesse готово :) Я также добавил еще один оператор console.info в метод parseDate перед toString (), просто чтобы дважды проверить, будет ли он распечатан, если не было упоминания о методе toString (), а он все еще не Распечатать

Maegz 15.10.2018 23:20

Пожалуйста, предоставьте пример того, как этот код вызывается, с примером того, как значение date передается в parseDate. Другими словами, минимальный воспроизводимый пример.

Heretic Monkey 15.10.2018 23:24

Не могли бы вы опубликовать примерную дату, которую разбираете?

Husein Roncevic 15.10.2018 23:25

попробуйте {var parsedDate = new ReadingDate (parseInt (dateArray [0]), parseInt (dateArray [1]), parseInt (dateArray [2]), parseInt (timeArray [0]]), parseInt (timeArray [1]), parseInt ( timeArray [2]));} catch (ошибка) {console.info (error);}

Osama 15.10.2018 23:45

вы можете войти в начало и конец конструктора?

HermanTheGermanHesse 15.10.2018 23:47

@huseinRoncevic Дата выборки: «2018-10-16 10:32:02» (кавычки служат только для обозначения строки)

Maegz 15.10.2018 23:50

@HereticMonkey проверьте обновленный пост, этого достаточно?

Maegz 15.10.2018 23:50

@ Осама, я не знаю, почему я не подумал попробовать это! Отредактирую результаты в свой пост

Maegz 15.10.2018 23:53

каков будет результат, если вы попытаетесь поймать объект, создающий

Osama 15.10.2018 23:54

@Osama См. Конец моего сообщения

Maegz 15.10.2018 23:57

Довольно очевидно: ReferenceError: ReadingDate не определен, в чем проблема.

Randy Casburn 16.10.2018 00:05

Спасибо, ребята, я исправил, пожалуйста, посмотрите мой ответ ниже! Спасибо за вашу помощь, вы все были великолепны :)

Maegz 16.10.2018 00:08

Возможный дубликат Машинопись, класс не определен

Heretic Monkey 16.10.2018 00:48
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
21
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Спасибо за всю вашу помощь, особенно @osama за то, что предложили попробовать / уловить, чтобы найти ошибку. Оказывается, все, что мне нужно было сделать, это экспортировать мой класс ReadingDate, а затем импортировать его в мой файл парсера. Кажется, такая же / похожая проблема, что и в этом сообщении здесь.

Мой дорогой @Maegz, не забывай всегда использовать экспорт и импорт.

Osama 16.10.2018 00:13

И, пожалуйста, всегда публикуйте весь класс.

HermanTheGermanHesse 16.10.2018 07:09

Другие вопросы по теме