TypeScript Academy · पाठ

विज़िटर से AST को पार करना

कोड की संरचना का विश्लेषण करने के लिए सिंटैक्स ट्री के नोड पर जाएँ

पाठ 2, कुल 4 में से13 चरण

विज़िटर से AST को पार करना, CoddyKit पर TypeScript Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह TypeScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

AST क्या है

TypeScript स्रोत कोड को अमूर्त वाक्यविन्यास वृक्ष (AST) में पार्स करता है — यह नोडों का ऐसा वृक्ष है जो चर, फ़ंक्शन और अभिव्यक्तियों जैसी भाषा संरचनाओं को दर्शाता है।

import ts from "typescript";
const sf = ts.createSourceFile(
  "example.ts",
  "const x = 1;",
  ts.ScriptTarget.Latest
);

नोड प्रकार

हर AST नोड में kind प्रॉपर्टी होती है, जो ts.SyntaxKind एनम मान होती है और यह बताती है कि नोड किसका प्रतिनिधित्व करता है।

import ts from "typescript";
// Common kinds:
// ts.SyntaxKind.VariableDeclaration
// ts.SyntaxKind.FunctionDeclaration
// ts.SyntaxKind.Identifier

forEachChild के साथ भ्रमण

ts.forEachChild(node, visitor) नोड के प्रत्येक सीधे बाल-नोड के लिए आपके विज़िटर को कॉल करता है। पूरे वृक्ष में भ्रमण करने के लिए पुनरावृत्ति का उपयोग करें।

function visit(node: ts.Node) {
  if (ts.isFunctionDeclaration(node)) {
    console.log("Function:", node.name?.text);
  }
  ts.forEachChild(node, visit);
}
visit(sourceFile);

प्रकार-पहचानक फ़ंक्शन

TypeScript सुरक्षित नोड संकुचन के लिए ts.isVariableDeclaration और ts.isFunctionDeclaration जैसे प्रकार-पहचानक फ़ंक्शन उपलब्ध कराता है।

ts.forEachChild(sf, node => {
  if (ts.isClassDeclaration(node)) {
    console.log("Class:", node.name?.getText());
  }
  if (ts.isInterfaceDeclaration(node)) {
    console.log("Interface:", node.name.getText());
  }
});

नोड का पाठ प्राप्त करना

किसी नोड का सटीक स्रोत पाठ प्राप्त करने के लिए node.getText(sourceFile) का उपयोग करें, या अतिरिक्त जानकारी सहित पाठ के लिए node.getFullText() का उपयोग करें।

ts.forEachChild(sf, node => {
  if (ts.isIdentifier(node)) {
    console.log("Id:", node.text);
  }
});

नोड की स्थितियाँ

हर नोड में pos और end स्थितियाँ होती हैं — ये वर्ण ऑफ़सेट हैं, जिनका उपयोग आप स्रोत में नोडों का स्थान खोजने के लिए कर सकते हैं।

ts.forEachChild(sf, node => {
  console.log(node.kind, "at", node.pos, "-", node.end);
});

पुनरावर्ती सहायक के साथ भ्रमण

एक सामान्य उपयोगिता walk फ़ंक्शन है, जो वृक्ष के प्रत्येक नोड पर बार-बार विज़िटर लागू करता है।

function walk(node: ts.Node, visitor: (n: ts.Node) => void) {
  visitor(node);
  ts.forEachChild(node, child => walk(child, visitor));
}

सभी फ़ंक्शन कॉल ढूँढना

स्रोत फ़ाइल में सभी कॉल अभिव्यक्तियाँ ढूँढने के लिए बार-बार चलने वाले भ्रमण का उपयोग करें — यह API के उपयोग का पता लगाने में उपयोगी है।

walk(sf, node => {
  if (ts.isCallExpression(node)) {
    const expr = node.expression.getText(sf);
    console.log("Call:", expr);
  }
});

पैरेंट नोड तक पहुँचना

AST नोड में डिफ़ॉल्ट रूप से पैरेंट पॉइंटर नहीं होता। ts.setParent(sourceFile) को कॉल करें या program.getSourceFile का उपयोग करें, जो प्रोग्राम के लिए पैरेंट स्वतः निर्धारित करता है।

// For manually created source files:
// (ts as any).setParents(sf);

नोड के साथ TypeChecker का उपयोग

किसी भी अभिव्यक्ति नोड के TypeScript प्रकार को निर्धारित करने के लिए AST भ्रमण को प्रकार जाँचक के साथ संयोजित करें।

const checker = program.getTypeChecker();
walk(sf, node => {
  if (ts.isExpression(node)) {
    const type = checker.getTypeAtLocation(node);
    console.log(checker.typeToString(type));
  }
});

पुनरावलोकन: AST भ्रमण

forEachChild और प्रकार-जाँच फ़ंक्शन के साथ TypeScript AST का भ्रमण करें। शक्तिशाली स्थैतिक विश्लेषण और कोड निर्माण उपकरण बनाने के लिए इसे प्रकार जाँचक के साथ संयोजित करें।

त्वरित जाँच

TypeScript AST में चाइल्ड नोड पर बार-बार कौन-सा फ़ंक्शन जाता है?

आपने क्या सीखा

AST भ्रमण में TypeScript फ़ाइल के प्रत्येक नोड पर जाने और उसका निरीक्षण करने के लिए ts.forEachChild और प्रकार-जाँच फ़ंक्शन का उपयोग किया जाता है। प्रकार जाँचक के साथ संयोजित होने पर यह लिंटर, कोड विश्लेषक और रिफ़ैक्टरिंग उपकरण सक्षम करता है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ TypeScript सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
101
पाठ
352

अक्सर पूछे जाने वाले प्रश्न

क्या “विज़िटर से AST को पार करना” पाठ निःशुल्क है?

हाँ—“विज़िटर से AST को पार करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और TypeScript Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। TypeScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“विज़िटर से AST को पार करना” में मैं क्या सीखूँगा?

कोड की संरचना का विश्लेषण करने के लिए सिंटैक्स ट्री के नोड पर जाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ TypeScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या TypeScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर TypeScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“विज़िटर से AST को पार करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस TypeScript Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर TypeScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. API से TypeScript प्रोग्राम बनाना
  2. विज़िटर से AST को पार करना
  3. कस्टम ट्रांसफ़ॉर्मर और कोड जनरेशन
  4. सरल लिंटिंग टूल बनाना
← TypeScript Academy पर वापस जाएँ