我正在使用編譯器 API 來搜索一些(主要)用 JavaScript 撰寫的結構。有沒有辦法推斷變數宣告是否使用了const(或 const 斷言)var或let陳述句?例如,在這段代碼中:
const a = 1;
使用AST Explorer時,我可以在 VariableDeclarationList 節點中看到一個flags帶有值的屬性,但是當我使用編譯器 API 進行決議時,該屬性采用不同的值。我試圖與該屬性進行比較,但它總是導致錯誤。我正在使用 Typescript 4.4.3。2flagsts.NodeFlags.Const
uj5u.com熱心網友回復:
使用 AST Explorer 時,我可以在 VariableDeclarationList 節點中看到值為 2 的 flags 屬性,但是當我使用編譯器 API 進行決議時,該屬性采用不同的值。我試圖將 flags 屬性與 ts.NodeFlags.Const 進行比較,但它總是導致錯誤。
這正是你這樣做的方式。確保使用按位運算子檢查標志:
const sourceFile = ts.createSourceFile("file.ts", "const a = 1;");
const varStmt = sourceFile.statements[0] as ts.VariableStatement;
const isConst = (varStmt.declarationList.flags & ts.NodeFlags.Const) !== 0;
console.log(isConst); // true
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/343864.html
下一篇:僅使用打字稿庫
