Typescript编译器API:在单行上打印PropertySignature
我试图生成一个返回对象文本类型的函数(不确定这是否是正确的术语)。我目前使用以下方法:Typescript编译器API:在单行上打印PropertySignature,typescript,typescript-compiler-api,Typescript,Typescript Compiler Api,我试图生成一个返回对象文本类型的函数(不确定这是否是正确的术语)。我目前使用以下方法: ts.createFunctionDeclaration( 未定义,//装饰符 [],//修饰符 未定义,//星号 "福",, 未定义,//名称 [],//参数 ts.createTypeLiteralNode(//返回类型 [ ts.createPropertySignature( 未定义,//修饰符 ts.createIdentifier('bar'), 未定义,//问题标记 ts.createTypeR
ts.createFunctionDeclaration(
未定义,//装饰符
[],//修饰符
未定义,//星号
"福",,
未定义,//名称
[],//参数
ts.createTypeLiteralNode(//返回类型
[
ts.createPropertySignature(
未定义,//修饰符
ts.createIdentifier('bar'),
未定义,//问题标记
ts.createTypeReferenceNode(
'字符串',
未定义//泛型
),
未定义//初始值设定项
),
ts.createPropertySignature(
未定义,//修饰符
ts.createIdentifier('baz'),
未定义,//问题标记
ts.createTypeReferenceNode(
'字符串',
未定义//泛型
),
未定义//初始值设定项
)
]
),
创建块([
//一些有趣的陈述
])
);
这将生成以下代码:
函数foo():{
酒吧:字符串;
baz:字符串;
} {
//有趣的陈述
}
它可以工作,但我希望返回类型文字位于一行,如下所示:
函数foo():{bar:string,baz:string}{
//有趣的陈述
}
这是否可以仅使用Typescript编译器API实现,还是需要使用外部linter/格式化程序?尝试设置emit flag
EmitFlags。在type literal节点上的SingleLine
:
const typeLiteralNode = ts.createTypeLiteralNode(...);
ts.setEmitFlags(typeLiteralNode, EmitFlags.SingleLine);
在中,似乎表明可以执行此操作。尝试设置发射标志
EmitFlags。在type literal节点上的SingleLine
:
const typeLiteralNode = ts.createTypeLiteralNode(...);
ts.setEmitFlags(typeLiteralNode, EmitFlags.SingleLine);
这似乎表明有可能做到这一点