Ich brauche etwas Hilfe bei der Anpassung der Compiler-Ausgabe von Typoskript, oder um genauer zu sein, wenn es überhaupt möglich ist.Customize Typescript Compiler-Ausgabe
Ich habe das openui5 Framework, dessen Syntax, zum Beispiel die Erweiterung von Klassen, stark von ES5 + Standards abweicht. Auch AMD funktioniert anders. Hier
ist ein Beispiel:
Ich mag würde ein Modul importieren. In Typoskript sollte es sein:
import { Button } from "sap/m/Button";
, die so etwas wie dies in Javascript setzt heraus:
var Button = require("sap/m/Button");
Aber was ich brauche hier:
var Button = sap.ui.require("sap/m/Button");
Ein weiteres Beispiel:
Eigenschaften werden mit Getter- und Setter-Funktionen aufgelöst. Also, wenn Sie eine Klasse erweitern können Sie es geben ein JSON-Objekt mit den Eigenschaften:
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
}
jetzt nehmen openui5 die gegebene Eigenschaft und die Setter generieren. Zum Beispiel werden für die "title" -Eigenschaft die zwei Funktionen erzeugt:
getTitle();
setTitle(value);
Aber keine ES 5 -Eigenschaft.
in Typoskript So können Sie nicht Ihre Eigenschaft wie folgt zugreifen:
let myclass = new MyClass(); myclass.title = "Hallo Welt";
aber Sie werden die Getter und Setter-Methoden verwenden:
let myclass = new MyClass(); myclass.setTitle ("Hallo Welt");
Was würde Ich mag hier zu tun ist, um diesen Typoskript Code zu schreiben:
let myclass = new MyClass();
myclass.title = "Hello World";
, die zu diesem Javascript-Code transpiles:
let myclass = new MyClass();
myclass.setTitle("Hello World");
Ich glaube, ich kann diese Dekorateure mit auf meinen Klassen zu tun , aber Deklaratoren können nicht in Deklarationsdateien (D.ts) verwendet werden. Daher kann ich die Basisklassen nicht auf diese Weise verwenden.
So, hier ist meine Frage:
Ist es möglich, das Typoskript Transpiler zu erweitern und sagen, dass es das Zeug anders zu kompilieren?
Ein Schub in die richtige Richtung würde sehr geschätzt werden.
Es klingt wirklich wie das, was Sie wollen, ist für eine neue Version von openui5 zu warten. –
Gibt es Pläne, sich den ES-Standards zu nähern? –
Keine Ahnung, du müsstest ihre Roadmap konsultieren, die fast unmöglich zu suchen ist, selbst wenn sie existiert, da es anscheinend ein Widget namens Roadmap gibt. –