three.js is a JavaScript-based library. However, it's possible to use it in a TypeScript project, as the library exposes [link:https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html Declaration Files] (*d.ts* files).

A minimal configuration is required for the TypeScript compiler to discover three.js types.
You will need to set the [link:https://www.typescriptlang.org/docs/handbook/module-resolution.html moduleResolution] option to *node*, and the [link:https://www.typescriptlang.org/docs/handbook/compiler-options.html target] option to *es6* or newer.

// Example of minimal `tsconfig.json` file { "compilerOptions": { "target": "es6", "moduleResolution": "node", }, "include": [ "./src/**/*.ts" ], }

Note: As of today, it's not yet possible to use three.js typings without using those two options.

Note: It happens that some declarations are incorrect and/or missing. Contributing to Declaration Files is really helpful for the community, making three.js typings better and more accurate.