Машинопись
TypeScript — это JavaScript с типизацией. Адаптер JavaScript преобразует скрипт TypeScript в JavaScript при сохранении и выполняет результат. Для API скрипта ничего не меняется.on ,setState ,schedule А всё остальное вызывается и работает так же, как в JavaScript .
Разница заключается в том, что ошибка возникает до начала выполнения кода. В то время как JavaScript сообщает об ошибке только при выполнении соответствующей строки — возможно, спустя недели, посреди ночи, — TypeScript отклоняет её при сохранении.
Инвестировать
При создании нового скрипта в качестве типа выбирается TypeScript . Существующий скрипт JavaScript нельзя перевести на TypeScript; однако его содержимое можно скопировать в новый скрипт TypeScript, поскольку допустимый JavaScript также является допустимым TypeScript.
Что это дает
const id = 'hm-rpc.0.LEQ1234567.1.STATE';
on({ id, change: 'ne', ack: true }, obj => {
// obj.state.val ist als ioBroker.StateValue bekannt
const helligkeit: number = obj.state.val as number;
setState('deconz.0.Lights.1.bri', helligkeit);
});
Редактор распознает типы API скрипта и включенных библиотек. На практике это означает, что после точки он предлагает то, что есть на самом деле, неправильно написанное имя функции немедленно выделяется, иgetState(...) Оно не даёт чего угодно, но создаёт состояние, в котором...val ,ack иts .
Настройки переводчика
В настройках экземпляра есть отдельная вкладка TypeScript , где задаются параметры перевода для всех скриптов в этом экземпляре.
Строгий экзамен (strict Флаг `state` отключен для скриптов, хотя TypeScript автоматически включает его начиная с версии 6. Это сделано намеренно: значения состояния по своей природе неопределенны, и сstrict Каждый доступ кobj.state.val Это будет защищено. Те, кто хочет более строгую защиту, могут активировать её на этой вкладке.
Когда это того стоит
TypeScript не стоит использовать для каждой трехстрочной программы. Он стоит того, когда...
- Сценарий длиннее примерно пятидесяти строк.
- К нему редко прикасаются, поэтому его строительство уже никто не помнит.
- Он работает со структурами данных — списками комнат, таблицами распределения, конфигурациями в заголовке скрипта.
- В комплект входит внешняя библиотека, вызовы которой не известны наизусть.
В сценарии "если движение, то свет" затраты усилий перевешивают выгоду. Blockly или подход, основанный на правилах, являются лучшим решением.
Пожалуйста, обрати внимание
- Ошибка перевода препятствует запуску скрипта. Сообщение отображается в окне журнала под редактором и указывает строку и столбец.
- Номера строк в сообщениях об ошибках выполнения относятся к переведенному коду и могут отличаться от номеров в редакторе.
- Значения из состояний изначально не определены для TypeScript.
as numberИли же проверка в коде — это обычный способ, и проверка в любом случае является лучшим решением, поскольку адаптер, безусловно, может это сделать.nullдоставка.