首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用SWC生成TypeScript代码

如何用SWC生成TypeScript代码
EN

Stack Overflow用户
提问于 2021-12-27 11:00:45
回答 1查看 864关注 0票数 6

我希望在Rust中使用SWC来生成一些TypeScript代码。不幸的是,发射器似乎只能打印JavaScript。这是正确的,还是有方法打印TypeScript?例如,假设我们正在制作下面的AST。

代码语言:javascript
复制
use swc_atoms::js_word;
use swc_common::{BytePos, Span, SyntaxContext};
use swc_ecmascript;
use swc_ecmascript::ast;

fn main() {
    let program = ast::Program::Module(ast::Module {
        body: vec![ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(
            ast::ExportDecl {
                decl: ast::Decl::TsTypeAlias(ast::TsTypeAliasDecl {
                    span: Span::default(),
                    declare: false,
                    id: ast::Ident::new(js_word!(""), Span::default()),
                    type_params: None,
                    type_ann: Box::new(ast::TsType::TsKeywordType(ast::TsKeywordType {
                        span: Span::default(),
                        kind: ast::TsKeywordTypeKind::TsStringKeyword,
                    })),
                }),
                span: Span::default(),
            },
        ))],
        shebang: None,
        span: Span::new(BytePos(1), BytePos(1), SyntaxContext::empty()),
    });
}

如何获得与TypeScript AST对应的program

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-29 12:46:51

您需要首先创建一个编译器(使用swc包而不是swc_common)

在Cargo.toml依赖项中添加:

swc = { git = "https://github.com/swc-project/swc" }

代码语言:javascript
复制
let c = swc::Compiler::new(cm.clone());

然后使用它公开的print方法。

代码语言:javascript
复制
let ast_printed = c
        .print(
            &ast,
            Some(filename.to_str().unwrap()),
            None,
            false,
            EsVersion::Es2022,
            SourceMapsConfig::Bool(false),
            &AHashMap::default(),
            None,
            false,
            None,
        )
        .expect("Failed to print");

然后可以使用.code打印println!("{}", ast_printed.code);字段。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70494606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档