@microsoft/api-extractor
Version:
Validate, document, and review the exported API for a TypeScript library
53 lines • 2.39 kB
JavaScript
;
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
// See LICENSE in the project root for license information.
Object.defineProperty(exports, "__esModule", { value: true });
const node_core_library_1 = require("@microsoft/node-core-library");
const AstItem_1 = require("./AstItem");
const AstParameter_1 = require("./AstParameter");
const TypeScriptHelpers_1 = require("../utils/TypeScriptHelpers");
const PrettyPrinter_1 = require("../utils/PrettyPrinter");
/**
* This class is part of the AstItem abstract syntax tree. It represents functions that are directly
* defined inside a package and are not member of classes, interfaces, or nested type literal expressions
*
* @see AstMethod for functions that are members of classes, interfaces, or nested type literal expressions
*/
class AstFunction extends AstItem_1.AstItem {
constructor(options) {
super(options);
this.kind = AstItem_1.AstItemKind.Function;
const methodDeclaration = options.declaration;
// Parameters
if (methodDeclaration.parameters) {
this.params = [];
for (const param of methodDeclaration.parameters) {
const declarationSymbol = TypeScriptHelpers_1.TypeScriptHelpers.getSymbolForDeclaration(param);
const astParameter = new AstParameter_1.AstParameter({
context: this.context,
declaration: param,
declarationSymbol: declarationSymbol
});
this.innerItems.push(astParameter);
this.params.push(astParameter);
}
}
// Return type
if (methodDeclaration.type) {
this.returnType = node_core_library_1.Text.convertToLf(methodDeclaration.type.getText());
}
else {
this.hasIncompleteTypes = true;
this.returnType = 'any';
}
}
/**
* Returns a text string such as "someName?: SomeTypeName;", or in the case of a type
* literal expression, returns a text string such as "someName?:".
*/
getDeclarationLine() {
return PrettyPrinter_1.PrettyPrinter.getDeclarationSummary(this.declaration);
}
}
exports.AstFunction = AstFunction;
//# sourceMappingURL=AstFunction.js.map