我是TS -morph操作的初学者。
我有一个现有源文件的模板,我想在主类的构造函数空间中继续构建模板。
cdk-gen-stack.ts
export class CdkGenStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
//to insert code below
}
}
ts-morph.ts
import * as tsmorph from "ts-morph";
const project = new tsmorph.Project({
tsConfigFilePath: "tsconfig.json",
});
const sourceFile = project.getSourceFile("lib/cdk-gen-stack.ts");
const mainClasses = sourceFile?.getClass("CdkGenStack");
const mainConstructor = mainClasses?.getConstructors();
sourceFile?.save();
我卡住了,因为我不确定从主类获得构造函数后我能做什么。我想要实现的,例如在主模板内的主类和构造函数:
cdk-gen-stack。ts(演变)
export class CdkGenStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// I want to start inserting something here, for example:
const table = new dynamodb.Table(this, 'Table', {
partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING }
});
}
}
我花了很多时间在网上研究,并试图得到任何现有的方法,我可以使用构造函数。类有addMethods
和addVariable
,例如mainClasses?.addMember("test");
或:
mainClasses?.set({
ctors: [{
statements: [
"test"
]
}]
});
然而,这些会将它们插入构造函数之外。我想要的是将它插入到已经存在于类中的给定constructor
中。
您可以在构造器节点上使用.addStatements
:
const mainConstructors = clazz.getConstructors();
mainConstructors[0].addStatements('console.log(123);');
查看文档以获取更多示例和API。