2017-02-14 20 views
0

Я работаю с Typcript .1.5 и пытается написать с ним несколько новых разделов кода. У меня есть JSбиблиотека, что я не готов к обновлению в Typcript. Проблема в том, что Мне нужно использовать некоторые из этих Javascript-кода в простом компоненте машинописного текста.Требуется объект JS и его функции в проекте машиностроения Angular2

Я забирал веб-сайт для получения функций Javascript для вызова и работы в файле .TS. К сожалению, информация устаревшая (в основном), непонятно или вообще не объяснено. Я уже пробовал много трюков, но никто не работает.

Так что мой вопрос: Какой путь простого и простого способ потреблять яваскрипт кода в файле TS (ES6)? Для выполнения этого должен быть протокол.

Любое учебное пособие, ссылка или пояснения будут очень оценены, и я уверен, что это поможет другим в той же ситуации.

Для лучшего понимания здесь некоторые фрагменты кода:

Я начинаю делать импорт из моего файла JS в component.ts

var ZP = require('./zp.js'); 

В моем файле JS У меня есть два типа функций. Соответственно основной один и другой, методы от объекта:

**export** function logTest(){ 
    console.log("Responding"); 
}//Simple function 

(* я только что нашел во время редактирования, что путем добавления ключевого слова «экспорт» в простой функции делает доступна для вызова в файле TS . Не работает с методами *).

DObject.stringtest = function(){ 
    return "Responding"; 
} //Object Method 

Назад к моим component.ts файл я называю каждого из них. простая функция с экспорта ключевое слово теперь вызывается, но DObjectметод остается неопределенным. (Я сделал фиктивные звонки для DObject, чтобы показать, что не работает, даже если это может показаться очевидным для некоторых).

testFunc(event){ 
     console.log("event is okay"); 
     console.log(ZP.logTest()); <--- Now Works 
     console.log(ZP.stringTest()); <--- Don't Work 
     console.log(ZP.DObject.stringTest()); <--- Don't Work 
     console.log(ZP.DObject.stringTest); <--- Don't Work 
     } 

Вот консольные журналы:

DObject.stringTest is not a function 

(В течение первых двух вызовов stringTest())

Undefined 

(для последнего вызова DObject.stringTest)

(Я только что нашел что-то о файлах декларации, я сделаю это, надеюсь, если он сработает, я полностью отредактирую подробное объяснение пошагового руководства. В то же время любая помощь будет высоко оценена.)

+0

Просто импортировать его. Все JS действительны TS – tom10271

+0

Я слышал это, но когда я запрашиваю функцию из JS-файла, я получил ошибку: xxx не является функцией. Кроме того, невозможно использовать супер конструктор, чтобы использовать его, как в этом контексте. –

+1

Попробуйте опубликовать несколько примеров кода, чтобы помочь объяснить вашу проблему. Что такое простая функция в вашем файле JavaScript? Как вы пытаетесь использовать его в TypeScript? Как вы импортируете этот файл? Основная информация, подобная этой, поможет другим правильно диагностировать вашу проблему. – blorkfish

ответ

-1

В вашем случае ваши существующие файлы javascript не обнаруживаются в машинописном тексте, потому что типизация недоступна.

вы можете создать файл определения типа (index.d.ts) и продолжать добавлять свои тиски, чтобы он был доступен вашему tsc-компилятору.

Ниже приведены некоторые сведения, которые необходимо понять при приеме в мир машинописных материалов. Некоторые из вас могут это знать, некоторые могут этого не делать.

  • каждый файл машинопись transpiled на Java Script в конкретную версию, которую вы хотите в tsconfig.json

  • машинописи понять машинописную (для требуется Javascript определения типа) или определение типа.

  • Есть много типирование доступны в 2-х формах:
    1. типизации установить
    2. @types пакет имен
  • импорта и экспорта делает доступными ваши члены и свойства для других
+0

Хорошо, но как структура объявления объекта в файле .d.ts? Как компилятор знает, что мой объект DObject существует? Как я могу объявить довольно статические функции (метод), такие как DObject.Counter = function() {...}? Тогда как их называть? Достаточно ли требуемого имени переменной? мне нужно импортировать файл .d.ts? –