'printer.printFile prints empty string
I am using the compiler API to create Typescript code. After assigning const printer = createPrinter()
, I can use printer.printNode
and printer.printList
to print my AST. But for some reason, printer.printFile
always prints empty strings.
const printer = createPrinter();
const sourceFile = createSourceFile(
'dummy.ts',
'',
ScriptTarget.ESNext,
false,
ScriptKind.TS
);
const classDeclaration = factory.createClassDeclaration(
undefined,
undefined,
'Foo',
undefined,
undefined,
[]
);
factory.updateSourceFile(sourceFile, factory.createNodeArray([classDeclaration]));
console.log(printer.printFile(sourceFile)); // '';
Why is printer.printFile
always printing an empty string?
Solution 1:[1]
I'm not sure why but it looks like the factory.updateSourceFile
returns the updated SourceFile
.
const printer = createPrinter();
// const -> let
let sourceFile = createSourceFile(
'dummy.ts',
'',
ScriptTarget.ESNext,
false,
ScriptKind.TS
);
const classDeclaration = factory.createClassDeclaration(
undefined,
undefined,
'Foo',
undefined,
undefined,
[]
);
// assign the updated source file
sourceFile = factory.updateSourceFile(sourceFile, factory.createNodeArray([classDeclaration]));
console.log(printer.printFile(sourceFile));
// class Foo {
// }
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | bmdelacruz |