Skip to main content
Version: Latest (0.56.x)

Importing files and libraries in TypeSpec

Imports are used to include files or libraries into your TypeSpec program. When compiling a TypeSpec file, you specify the path to your root TypeSpec file, typically named "main.tsp". From this root file, any imported files are added to your program. If a directory is imported, TypeSpec will search for a main.tsp file within that directory.

The path specified in the import must either start with "./" or "../", or be an absolute path. The path should either point to a directory, or have an extension of either ".tsp" or ".js". The examples below illustrate how to use imports to assemble a TypeSpec program from multiple files:

Importing a TypeSpec file

import "./models/foo.tsp";

Importing a JavaScript file

import "./decorators.js";

Importing a library

The import value can be the name of one of the package dependencies. In this case, TypeSpec will look for the package.json file and check the tspMain entry (defaulting to main if tspMain is absent) to determine the library entrypoint to load.

import "/rest";
// ./node_modules/@typespec/rest/package.json
{
"tspMain": "./lib/main.tsp"
}

This results in ./node_modules/@typespec/rest/lib/main.tsp being imported.

Importing a directory

If the import value is a directory, TypeSpec will check if that directory is a Node package and follow the npm package lookup logic, or if the directory contains a main.tsp file.

import "./models"; // equivalent to `import "./models/main.tsp";
import "./path/to/local/module"; // Assuming this path is a TypeSpec package, it will load it using the tspMain file.