ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
58 lines (57 loc) • 2.37 kB
TypeScript
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;