Мне нужна помощь в настройке вывода компилятора машинописного текста, или, если быть более точным, если это вообще возможно.
У меня есть фреймворк openui5, синтаксис которого, например расширение классов, сильно отличается от стандартов ES5+. Также AMD работает по-другому.
Вот пример:
Я хотел бы импортировать модуль. В машинописном тексте должно быть:
import { Button } from "sap/m/Button";
который выводит что-то вроде этого в javascript:
var Button = require("sap/m/Button");
Но вот что мне нужно:
var Button = sap.ui.require("sap/m/Button");
Другой пример:
Свойства разрешаются с помощью функций получения и установки. Поэтому, когда вы расширяете класс, вы можете дать ему объект json со свойствами:
properties: {
"title" : "string", // a simple string property, default value is undefined
"buttonText" : {defaultValue: "Search"}, // when no type is given, the type is string
"showLogoutButton" : {type : "boolean", defaultValue : true}, // a boolean property where a default value is given
"width" : {type : "sap.ui.core.CSSSize", defaultValue : "50px"} // a CSS size property where a default value is given
}
теперь openui5 возьмет данное свойство и сгенерирует сеттеры. Например, для свойства title будут сгенерированы две функции:
getTitle();
setTitle(value);
Но нет свойства ES 5.
Итак, в typescript вы не можете получить доступ к своей собственности следующим образом:
пусть мой класс = новый MyClass(); myclass.title = "Привет, мир";
но вам придется использовать методы getter и setter:
пусть мой класс = новый MyClass(); myclass.setTitle («Привет, мир»);
Что я хотел бы сделать здесь, так это написать этот машинописный код:
let myclass = new MyClass();
myclass.title = "Hello World";
который транспилируется в этот код javascript:
let myclass = new MyClass();
myclass.setTitle("Hello World");
Я думаю, что могу сделать это в своих классах с помощью декораторов, но вы не можете использовать декораторы в файлах объявлений (d.ts). Поэтому я не могу использовать базовые классы таким образом.
Вот мой вопрос:
Можно ли расширить транспилятор машинописного текста и заставить его компилировать этот материал по-другому?
Толчок в правильном направлении был бы высоко оценен.