是否有用于TypeScript的代码生成API? [英] Is there code generation API for TypeScript?
本文介绍了是否有用于TypeScript的代码生成API?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我需要生成一些C#代码时,例如从xsd模式生成DTO类或excel表时,我使用了一些roslyn API。
When I needed to generate some C# code, for example DTO classes from xsd schema, or an excel table, I've used some roslyn API's.
打字稿中是否存在类似的符号?
Is there something simmilar for typescript?
:我最终使用了 ts-morph
推荐答案
截至2018年10月,您可以为此使用标准TypeScript API
as of Oct-2018 You could use standard TypeScript API for that
import ts = require("typescript");
function makeFactorialFunction() {
const functionName = ts.createIdentifier("factorial");
const paramName = ts.createIdentifier("n");
const parameter = ts.createParameter(
/*decorators*/ undefined,
/*modifiers*/ undefined,
/*dotDotDotToken*/ undefined,
paramName
);
const condition = ts.createBinary(
paramName,
ts.SyntaxKind.LessThanEqualsToken,
ts.createLiteral(1)
);
const ifBody = ts.createBlock(
[ts.createReturn(ts.createLiteral(1))],
/*multiline*/ true
);
const decrementedArg = ts.createBinary(
paramName,
ts.SyntaxKind.MinusToken,
ts.createLiteral(1)
);
const recurse = ts.createBinary(
paramName,
ts.SyntaxKind.AsteriskToken,
ts.createCall(functionName, /*typeArgs*/ undefined, [decrementedArg])
);
const statements = [ts.createIf(condition, ifBody), ts.createReturn(recurse)];
return ts.createFunctionDeclaration(
/*decorators*/ undefined,
/*modifiers*/ [ts.createToken(ts.SyntaxKind.ExportKeyword)],
/*asteriskToken*/ undefined,
functionName,
/*typeParameters*/ undefined,
[parameter],
/*returnType*/ ts.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
ts.createBlock(statements, /*multiline*/ true)
);
}
const resultFile = ts.createSourceFile(
"someFileName.ts",
"",
ts.ScriptTarget.Latest,
/*setParentNodes*/ false,
ts.ScriptKind.TS
);
const printer = ts.createPrinter({
newLine: ts.NewLineKind.LineFeed
});
const result = printer.printNode(
ts.EmitHint.Unspecified,
makeFactorialFunction(),
resultFile
);
console.log(result);
这篇关于是否有用于TypeScript的代码生成API?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文