Typescript 自定义类型脚本编译器输出

Typescript 自定义类型脚本编译器输出,typescript,transpiler,Typescript,Transpiler,我需要一些帮助来开始定制typescript的编译器输出,或者更准确地说,如果可能的话 我有openui5框架,它的语法(例如扩展类)与ES5+标准有很大不同。AMD的工作方式也不同 以下是一个例子: 我想导入一个模块。在typescript中,它应该是: import { Button } from "sap/m/Button"; 这在javascript中表现出如下内容: var Button = require("sap/m/Button"); 但我需要的是: var Button =

我需要一些帮助来开始定制typescript的编译器输出,或者更准确地说,如果可能的话

我有openui5框架,它的语法(例如扩展类)与ES5+标准有很大不同。AMD的工作方式也不同

以下是一个例子:

我想导入一个模块。在typescript中,它应该是:

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。例如,“title”属性将生成两个函数:

getTitle();
setTitle(value);
但是没有ES5属性

因此,在typescript中,您不能像这样访问您的属性:

让myclass=新的myclass(); myclass.title=“你好世界”

但您必须使用getter和setter方法:

让myclass=新的myclass(); myclass.setTitle(“你好世界”)

我想在这里做的是编写以下类型脚本代码:

let myclass = new MyClass();
myclass.title = "Hello World";
let myclass = new MyClass();
myclass.setTitle("Hello World");
哪些文件传输到此javascript代码:

let myclass = new MyClass();
myclass.title = "Hello World";
let myclass = new MyClass();
myclass.setTitle("Hello World");
我想我可以使用decorator在类上实现这一点,但不能在声明文件(d.T)中使用decorator。所以我不能这样使用基类

所以我的问题是:

是否可以扩展typescript transpiler并告诉它以不同的方式编译这些内容?


如果您能朝正确的方向努力,我们将不胜感激。

您可以自己制造运输工具

  • 通过扩展TypeScript源代码
  • 通过使用
    类型脚本语言服务
    (文档)和
    编译器API
    (文档)编写脚本,您可以通过简单的方式处理脚本并构建自己的transpiler
  • 按照框架要求编写代码

  • 听起来你真正想要的是等待新版本的openui5。是否有计划更接近ES标准?不知道,你必须查阅他们的路线图,这几乎是不可能的搜索,即使它存在,因为显然有一个名为roadmap的小部件。谢谢你的回答。我通读了编译器api。所以这里有一个后续问题:例如,如果我扩展ts编译器,我将不得不部署源代码并通过gulp运行它。没有办法在某种程度上“附加”脚本到typescript编译器?我认为这是不可能的。您可以编写自己的编译器来更新源代码,然后调用普通编译器。好的,很好。因为我想把它包含在vscode扩展中,所以我想我可以做到这一点。非常感谢你的帮助。我会看一看编译器API。如果你知道更好的方法,请随意发布,我会将它标记为答案,或者告诉我们为什么你认为这是不现实的或不好的。现在它把我推向了正确的方向。我总是感谢任何建设性的帮助。