UNPKG

ts-simple-ast

Version:

TypeScript compiler wrapper for AST navigation and code generation.

58 lines (57 loc) 2.37 kB
import * as ts from "typescript"; import { Constructor } from "./../../Constructor"; import { ParameterDeclarationStructure } from "./../../structures"; import { Node } from "./../common"; import { ParameterDeclaration } from "./../function/ParameterDeclaration"; export declare type ParameteredNodeExtensionType = Node<ts.Node & { parameters: ts.NodeArray<ts.ParameterDeclaration>; }>; export interface ParameteredNode { /** * Gets a parameter or undefined if it doesn't exist. * @param name - Name of the parameter. */ getParameter(name: string): ParameterDeclaration | undefined; /** * Gets a parameter or undefined if it doesn't exist. * @param findFunction - Function to use to find the parameter. */ getParameter(findFunction: (declaration: ParameterDeclaration) => boolean): ParameterDeclaration | undefined; /** * Gets a parameter or throws if it doesn't exist. * @param name - Name of the parameter. */ getParameterOrThrow(name: string): ParameterDeclaration; /** * Gets a parameter or throws if it doesn't exist. * @param findFunction - Function to use to find the parameter. */ getParameterOrThrow(findFunction: (declaration: ParameterDeclaration) => boolean): ParameterDeclaration; /** * Gets all the parameters of the node. */ getParameters(): ParameterDeclaration[]; /** * Adds a parameter. * @param structure - Structure of the parameter. */ addParameter(structure: ParameterDeclarationStructure): ParameterDeclaration; /** * Adds parameters. * @param structures - Structures of the parameters. */ addParameters(structures: ParameterDeclarationStructure[]): ParameterDeclaration[]; /** * Inserts parameters. * @param index - Index to insert at. * @param structures - Parameters to insert. */ insertParameters(index: number, structures: ParameterDeclarationStructure[]): ParameterDeclaration[]; /** * Inserts a parameter. * @param index - Index to insert at. * @param structures - Parameter to insert. */ insertParameter(index: number, structure: ParameterDeclarationStructure): ParameterDeclaration; } export declare function ParameteredNode<T extends Constructor<ParameteredNodeExtensionType>>(Base: T): Constructor<ParameteredNode> & T;