This library is used with the @microsoft/api-extractor. For documentation and other information about the API Extractor tool, please visit the web site.
The @microsoft/api-extractor-model library is used to read and write the *.api.json data file format, which stores information about the exported API signatures for a TypeScript project.
The following code sample shows how to load example.api.json, which would be generated by API Extractor
when it analyzes a hypothetical NPM package called example:
import { ApiModel, ApiPackage } from '@microsoft/api-extractor-model';
const apiModel: ApiModel = new ApiModel();
const apiPackage: ApiPackage = apiModel.loadPackage('example.api.json');
for (const member of apiPackage.members) {
console.log(member.displayName);
}The ApiModel is acts as a container for various packages that are loaded and operated on as a group.
For example, a documentation tool may need to resolve @link references across different packages.
In this case we would load the various packages into the ApiModel, and then use
the ApiModel.resolveDeclarationReference() to resolve the @link targets.
The data structure forms a tree of various classes that start with the Api prefix. The nesting hierarchy
might look like this:
- ApiModel
- ApiPackage
- ApiEntryPoint
- ApiClass
- ApiMethod
- ApiProperty
- ApiEnum
- ApiEnumMember
- ApiInterface
- ApiMethodSignature
- ApiPropertySignature
- ApiNamespace
- (ApiClass, ApiEnum, ApiInterace, ...)
You can use the ApiItem.members property to traverse this tree.
Note that the non-abstract classes (e.g. ApiClass, ApiEnum, ApiInterface, etc.) use
TypeScript "mixin" functions (e.g. ApiDeclaredItem, ApiItemContainerMixin, etc.) to add various
features that cannot be represented as a normal inheritance chain (since TypeScript does not allow a child class
to extend more than one base class). The "mixin" is a TypeScript merged declaration with three components:
the function that generates a subclass, an interface that describes the members of the subclass, and
a namespace containing static members of the class.
For a complete example that shows how to uset these APIs to generate an API reference web site, see the @microsoft/api-documenter source code.