ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
230 lines (169 loc) • 13.8 kB
HTML
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>TsSimpleAst</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<link rel="stylesheet" href="/assets/css/style.css?v=71a391c40e7283d83416a246f2c61c5fcb76068a">
<!--
<link rel="stylesheet" href="/assets/css/style.css?v=71a391c40e7283d83416a246f2c61c5fcb76068a">
<link rel="stylesheet" href="/assets/css/custom-style.css?v=71a391c40e7283d83416a246f2c61c5fcb76068a">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="/assets/js/main.js"></script>-->
</head>
<body>
<div class="main">
<header class="container">
<div class="row">
<h1 onclick="document.location.href = '/'" class="headerLink">TsSimpleAst</h1>
<!--<p class="subText">Simple way to navigate and manipulate the TypeScript AST.</p>-->
</div>
</header>
<div class="container">
<div class="row">
<div class="col-md-3">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<nav class="sidebar-nav" id="navbarSupportedContent">
<ul class="navbar-nav navbar-default">
<li class="nav-item">
<a class="nav-link" href="/">Overview</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/setup">Setup</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/navigation">Navigation</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/manipulation">Manipulation</a>
</li>
<li class="">
<a class="nav-link" href="/details/index">Details</a>
<ul>
<li class=""><a href="/details/source-files">Source Files</a></li>
<li class="active"><a href="/details/classes">Classes</a></li>
<li class=""><a href="/details/enums">Enums</a></li>
<li class=""><a href="/details/functions">Functions</a></li>
<li class=""><a href="/details/interfaces">Interfaces</a></li>
<li class=""><a href="/details/namespaces">Namespaces</a></li>
<li class=""><a href="/details/type-aliases">Type Aliases</a></li>
<li class=""><a href="/details/variables">Variables</a></li>
<li>--</li>
<li class=""><a href="/details/types">Types</a></li>
<li class=""><a href="/details/expressions">Expressions</a></li>
<li>--</li>
<li class=""><a href="/details/ambient">Ambient</a></li>
<li class=""><a href="/details/async">Async</a></li>
<li class=""><a href="/details/decorators">Decorators</a></li>
<li class=""><a href="/details/exports">Exports</a></li>
<li class=""><a href="/details/generators">Generators</a></li>
<li class=""><a href="/details/documentation">JS Docs</a></li>
<li class=""><a href="/details/modifiers">Modifiers</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="http://github.com/dsherret/ts-simple-ast">View on GitHub</a>
</li>
</ul>
</nav>
</div>
<section class="container-fluid col-md-9">
<h2 id="class-declarations">Class Declarations</h2>
<p>Class declarations can be retrieved from source files, namespaces, or function bodies:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">classes</span> <span class="o">=</span> <span class="nx">sourceFile</span><span class="p">.</span><span class="nx">getClasses</span><span class="p">();</span>
<span class="kd">const</span> <span class="nx">class1</span> <span class="o">=</span> <span class="nx">sourceFile</span><span class="p">.</span><span class="nx">getClass</span><span class="p">(</span><span class="s2">"Class1"</span><span class="p">);</span>
<span class="kd">const</span> <span class="nx">firstClassWithConstructor</span> <span class="o">=</span> <span class="nx">sourceFile</span><span class="p">.</span><span class="nx">getClass</span><span class="p">(</span><span class="nx">c</span> <span class="o">=></span> <span class="nx">c</span><span class="p">.</span><span class="nx">getConstructor</span><span class="p">()</span> <span class="o">!==</span> <span class="kc">undefined</span><span class="p">);</span>
</code></pre>
</div>
<h3 id="extends-expression">Extends expression</h3>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">extendsExpression</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getExtendsExpression</span><span class="p">();</span>
</code></pre>
</div>
<p>Will return <a href="expressions"><code class="highlighter-rouge">ExpressionWithTypeArguments | undefined</code></a>.</p>
<h3 id="implements-expressions">Implements expressions</h3>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">implementsExpressions</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getImplementsExpressions</span><span class="p">();</span>
</code></pre>
</div>
<p>Will return <a href="expressions"><code class="highlighter-rouge">ExpressionWithTypeArguments[]</code></a>.</p>
<h3 id="constructor">Constructor</h3>
<p>If one exists, it can be retrieved via <code class="highlighter-rouge">getConstructor</code>:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">ctor</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getConstructor</span><span class="p">();</span>
</code></pre>
</div>
<h3 id="methods">Methods</h3>
<p>Get the instance methods using <code class="highlighter-rouge">getInstanceMethods()</code>:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">instanceMethods</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getInstanceMethods</span><span class="p">();</span>
</code></pre>
</div>
<p>Get the static methods using <code class="highlighter-rouge">getStaticMethods()</code>:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">staticMethods</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getStaticMethods</span><span class="p">();</span>
</code></pre>
</div>
<h3 id="properties">Properties</h3>
<p>Get the instance properties using <code class="highlighter-rouge">getInstanceProperties()</code>:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">instanceProperties</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getInstanceProperties</span><span class="p">();</span>
</code></pre>
</div>
<p>Get the static properties using <code class="highlighter-rouge">getStaticProperties()</code>:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">staticProperties</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getStaticProperties</span><span class="p">();</span>
</code></pre>
</div>
<h3 id="get-members">Get members</h3>
<p>Get all static and instance members:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">allMembers</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getAllMembers</span><span class="p">();</span>
</code></pre>
</div>
<p>Get instance members:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">instanceMembers</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getInstanceMembers</span><span class="p">();</span>
</code></pre>
</div>
<p>Get static members:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">staticMembers</span> <span class="o">=</span> <span class="nx">classDeclaration</span><span class="p">.</span><span class="nx">getStaticMembers</span><span class="p">();</span>
</code></pre>
</div>
<h2 id="abstract">Abstract</h2>
<p>Nodes on a class may be abstract.</p>
<p>Get if it’s abstract:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="nx">method</span><span class="p">.</span><span class="nx">getIsAbstract</span><span class="p">();</span> <span class="c1">// returns: boolean</span>
</code></pre>
</div>
<p>Get the abstract keyword:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="nx">method</span><span class="p">.</span><span class="nx">getAbstractKeyword</span><span class="p">();</span> <span class="c1">// returns: node | undefined</span>
</code></pre>
</div>
<p>Set if abstract:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="nx">method</span><span class="p">.</span><span class="nx">setIsAbstract</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span> <span class="c1">// set as abstract</span>
<span class="nx">method</span><span class="p">.</span><span class="nx">setIsAbstract</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span> <span class="c1">// set as not abstract</span>
</code></pre>
</div>
<h2 id="constructors">Constructors</h2>
<p>Constructors implement common functions found on function like declarations, but also include a scope.</p>
<h2 id="methods-1">Methods</h2>
<p>Explore the functionality available via auto-complete.</p>
<h2 id="properties-1">Properties</h2>
<p>Explore the functionality available via auto-complete.</p>
<h2 id="get-accessors">Get Accessors</h2>
<p>If it exists, you can get the corresponding set accessor:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">setAccessor</span> <span class="o">=</span> <span class="nx">getAccessor</span><span class="p">.</span><span class="nx">getSetAccessor</span><span class="p">();</span>
</code></pre>
</div>
<h2 id="set-accessors">Set Accessors</h2>
<p>If it exists, you can get the corresponding get accessor:</p>
<div class="language-typescript highlighter-rouge"><pre class="highlight"><code><span class="kd">const</span> <span class="nx">getAccessor</span> <span class="o">=</span> <span class="nx">setAccessor</span><span class="p">.</span><span class="nx">getGetAccessor</span><span class="p">();</span>
</code></pre>
</div>
</section>
</div>
</div>
<footer>
</footer>
</div>
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
<!--[if !IE]><script>fixScale(document);</script><![endif]-->
</body>
</html>