如何插入到主类中已有的构造函数模板中



我是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 }
});
}
}

我花了很多时间在网上研究,并试图得到任何现有的方法,我可以使用构造函数。类有addMethodsaddVariable,例如mainClasses?.addMember("test");或:

mainClasses?.set({
ctors: [{ 
statements: [
"test"
]
}]
});

然而,这些会将它们插入构造函数之外。我想要的是将它插入到已经存在于类中的给定constructor中。

您可以在构造器节点上使用.addStatements:

const mainConstructors = clazz.getConstructors();
mainConstructors[0].addStatements('console.log(123);');

查看文档以获取更多示例和API。

最新更新