This repository is the home for the TypeScript types for three.js. Periodically the updates from this repository are pushed to DefinitelyTyped and released in the @types/three
npm package.
We are using this repository as a home for the types instead of DefinitelyTyped because:
- It is less daunting for users to raise issues or create PRs on a repository that is specific to three.js
- It is easier to organize the process of making sure we're staying up-to-date with the changes in the three.js repository
- It gives us more freedom to use our own process
The highest priority is making sure that there are no inaccurate types (or types for things that have been removed).
It is a goal to have complete public facing API types for all of the code in the src
directory.
It is not a goal for the examples/jsm
directory to have complete declaration files for every examples module due to the number of example modules and how quickly they are modified. If you would like to use an examples module that is missing types then create a PR to add the types or create an issue to request that we add the missing types for that module.
Please see our Contributing Guidelines to help you get started. One of the most important things is choosing a branch to start your work on. If the code you want to contribute is for the current release of three
it should be based off master
. If it is for the next release of three
it should be based off dev
. You should then aim your merge into the branch you based off.
Thanks goes to these wonderful people (emoji key):
Why are the declaration files in a types/three/
directory and why is there a notNeededPackages.json
?
This makes it easier to re-use the testing process used by DefinitelyTyped since they have a check to make sure the types are within a types
directory as well a check for notNeededPackages.json
. It also makes it possible to use typeRoots
in the tsconfig.json
so that the three
types can be resolved correctly in the tests.