我读过《整个互联网》,但找不到任何关于从TypeScrypt源中获取语法树(就像在Esprima中一样)的例子.

{
    "type": "Program",
    "body": [
        {
            "type": "VariableDeclaration",
            "declarations": [
                {
                    "type": "VariableDeclarator",
                    "id": {
                        "type": "Identifier",
                        "name": "answer"
                    },
                    "init": {
                        "type": "BinaryExpression",
                        "operator": "*",
                        "left": {
                            "type": "Literal",
                            "value": 6,
                            "raw": "6"
                        },
                        "right": {
                            "type": "Literal",
                            "value": 7,
                            "raw": "7"
                        }
                    }
                }
            ],
            "kind": "var"
        }
    ]
}

来自javascript代码

var answer = 6 * 7;

仅适用于TypeScript源文本?

另外,我非常希望你的帮助,因为我不想写你自己的糟糕的自行车)

P.P.S.我认为lib文件是打字脚本.ts(.js)和typescriptServices.ts(.js)来帮助我,但我不知道如何:(

Solved

非常感谢用户Steve Fenton.

// uses
var typeScriptLS =  new Harness.TypeScriptLS();
var ServicesFactory = new Services.TypeScriptServicesFactory();
var serviceShim = ServicesFactory.createLanguageServiceShim(typeScriptLS);

// add lib.d.ts
var _libText = window.document.getElementById('lib.d.ts').innerText;
typeScriptLS.addScript('lib.d.ts', _libText.replace(/\r\n?/g,"\n"), true);

// add greeter.ts
var _sourceText = window.document.getElementById('greeter.ts').innerText;
typeScriptLS.addScript('greeter.ts', _sourceText.replace(/\r\n?/g,"\n"), true);

// script name
var _scriptName = 'greeter.ts';
// get syntax tree
var _st = serviceShim.languageService.getSyntaxTree(_scriptName);
//console.log(_st);
console.log(JSON.stringify(_st, "", 2));

推荐答案

这个问题在back in September岁之前就提出了.

will-magic目前没有这个方法.

不过,TypeScript编译器是开源的,而且完全是用TypeScript编写的,因此您可以扫描它,看看是否有可以使用/添加句柄的内容.

好的一面是,你有一个很大的机会将你的工作作为一个开源项目发布,因为从这两个问题的投票结果来看,这是有一些需求的.

或者,使用EsprimaSpiderMonkey从已编译的JavaScript(实际将在运行时执行的代码)中获取语法树.

Typescript相关问答推荐

如果存在一处房产,请确保存在其他房产

如何传递基于TypScript中可变类型的类型?

React-Native运行方法通过监听另一个状态来更新一个状态

带有微前端的动态React路由问题

TypeScript泛型参数抛出错误—?&#"' 39;预期"

使用带有RxJS主题的服务在Angular中的组件之间传递数据

返回同时具有固定键和变量键的对象的函数的返回类型

异步动态生成Playwright测试,显示未找到测试

类型脚本映射类型:从对象和字符串列表到键值对象

用于验证字符串变量的接口成员

是否将自动导入样式从`~/目录/文件`改为`@/目录/文件`?

从对象类型描述生成类型

TypeScrip中的类型安全包装类

为什么在泛型方法中解析此promise 时会出现类型错误?

在Thunk中间件中输入额外参数时Redux工具包的打字脚本错误

递归类型别名的Typescript 使用

如何使用IsEqual创建断言类型相等的实用程序

React中的效果挂钩在依赖项更新后不会重新执行

Typescript泛型-键入对象时保持推理

数据库中的表请求返回如下日期:2023-07-20T21:39:00.000Z 我需要将此数据格式化为 dd/MM/yyyy HH:mm