2016-07-05 3 views
0

Я пытаюсь преобразовать некоторые JS к ц и получил ошибку в методе canSave .My JavaScript код является,Ошибка при преобразовании JavaScript в машинописном

  scope.canSave = function() { 
 
       if (scope.category.orderNumber != scope.list) { 
 
        !_this.orderNumberAlreadyExist(scope.list, scope.category); 
 
       } 
 
      }; 
 
      
 
     

и когда я m пытается преобразовать это в TypeScript. Я получал Type '() => void' is not assignable to type '() => boolean' и Operator '!=' cannot be applied to types 'number' and 'Category[]' в командной строке. Какая была моя ошибка, и что я могу сделать сейчас, может кто-то пояснить меня.

+0

['processResource'] (https://docs.gradle.org/current/javadoc/org/gradle/language/jvm/tasks/ProcessResources.html)" Копирует ресурсы из своего источника в свой целевой каталог, потенциально обрабатывая их." Как эта команда должна преобразовывать JavaScript в TypeScript? – str

+0

Я обработаю две команды для преобразования js в ts, они являются вышеуказанными и (gradlew devResource). Это следующие шаги для конверсии. Я получил эту ошибку выше в первой команде! –

+0

за помощь вам нужно знать, как объявляются категория и список (в машинописи). Пожалуйста, разместите свой полный код, а также строки, где вы получаете ошибки – iberbeu

ответ

2

В принципе, вы сталкиваетесь с тем, что TypeScript (как подсказывает название!) Имеет гораздо более строгую систему типов, чем JavaScript, поэтому многие вещи, которые будут разрешены в последнем случае, заставят компилятор TypeScript кричите на вас.

У вас есть две проблемы здесь:

  • Где-то в вашем коде, scope.canSave в настоящее время определяется как функция без параметров, которая возвращает логическое значение. TypeScript представляет это как () => boolean - если в качестве параметра он принял число, это выглядело бы как (number) => boolean и так далее. С другой стороны, ваше новое определение функции ничего не возвращает. TypeScript представляет этот тип функции как () => void - он может сказать, что это не соответствует тому, что scope.canSaveдолжно быть be, поэтому оно дает вам сообщение об ошибке.
  • scope.category.orderNumber определяется как число, но scope.list определяется как массив объектов Category. Эти два типа не сопоставимы (вы не можете преобразовать массив объектов в число), поэтому TypeScript дает вам ошибку при попытке использовать на них оператор !=.
+0

Спасибо, Джо, вы говорите мне причину моей ошибки, но мне нужен приятель. И я не хочу менять свой код JavaScript, потому что эта логика, которую я использовал в моем коде, важна для моего приложения. поэтому мне нужно преобразовать это в TypeScript. –

+0

@Becky: для того, чтобы я мог дать определенное решение, вам нужно будет добавить часть кода, в которой вы первоначально определили переменные/типы (другими словами, где вы первоначально настроили свою «область»), чтобы ваш вопрос; вот где исправления будут иметь место. –

+0

Теперь я редактировал свой код, вы можете проверить –

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