我需要一些帮助来定制打字稿的编译器输出,或者如果它甚至可能更精确。自定义Typescript编译器输出
我有openui5框架,其中的语法,例如扩展类,从ES5 +标准差异很大。 AMD的工作方式也不同。
这里是一个例子:
我想导入一个模块。在打字稿它应该是:
import { Button } from "sap/m/Button";
其推出这样的事情在JavaScript:
var Button = require("sap/m/Button");
但我在这里需要的是:
var Button = sap.ui.require("sap/m/Button");
又如:
属性通过getter和setter函数解决。所以,当你扩展一个类你可以给它具有属性的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将采取给予财物并生成setter方法。例如,对于“标题”属性,将生成两个功能:
getTitle();
setTitle(value);
但是没有ES 5属性。
所以在打字稿你不能访问你的财产是这样的:
让MyClass的=新MyClass的(); myclass.title =“Hello World”;
但你必须使用getter和setter方法:
让MyClass的=新MyClass的(); myclass.setTitle(“Hello World”);
我想在这里做什么是写这个打字稿代码:
let myclass = new MyClass();
myclass.title = "Hello World";
这transpiles本javascript代码:
let myclass = new MyClass();
myclass.setTitle("Hello World");
我想我可以使用装饰我的班做,但是你不能在声明文件(d.ts)中使用装饰器。所以我不能以这种方式使用基类。
因此,这里是我的问题:
是否有可能延长打字稿transpiler并告诉它以不同的方式编译这个东西?
在正确的方向推动将不胜感激。
这听起来像你想要的是等待一个新版本的openui5。 – 2017-06-16 09:22:11
有计划接近ES标准吗? –
不知道,你必须咨询他们的路线图,即使它存在,几乎不可能搜索,因为显然有一个名为Roadmap的小部件。 – 2017-06-16 09:47:53