Skip to content

Latest commit

 

History

History
159 lines (137 loc) · 33.7 KB

README.md

File metadata and controls

159 lines (137 loc) · 33.7 KB

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

Priorities and goals

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.

Testing

The tests are split into two directories: types/three/test/integration and types/three/test/unit.

Integration tests

The integration tests are usually runnable three.js code that has just been translated to TypeScript to make sure the types work. The three-examples is a special directory that holds the examples from the three.js repository with matching file names. If you want to add a integration test, you can just create a new file in the integration directory.

Unit tests

The unit tests are more fine-grained tests that focus on testing the types for a single file from the source code (either from the three.js core or the JSM addons). The directory structure of the unit tests matches the directory structure of the source code. These tests often contain type assertions as well to test the result of calling a method or to verify that the types produce an error in certain situations.

Contributing

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.

Contributors

Thanks goes to these wonderful people (emoji key):

Josh
Josh

💬 🐛 💻 📖 🤔 🚧 👀 ⚠️
Nathan Bierema
Nathan Bierema

💬 🐛 💻 📖 🤔 🚇 🚧 👀 ⚠️
Michael Herzog
Michael Herzog

💻
Cody Bennett
Cody Bennett

💻
0b5vr
0b5vr

💻 ⚠️ 🚧 👀 🐛
Marquizzo
Marquizzo

💻
Yuanzk
Yuanzk

💻
Elisée Maurer
Elisée Maurer

💻
soadzoor
soadzoor

💻
rinsuki
rinsuki

💻
efokschaner
efokschaner

💻
Jonghun Park
Jonghun Park

💻
sjpt
sjpt

💻
Michał Mrozek
Michał Mrozek

💻
puxiao
puxiao

💻
ycw
ycw

💻
Jazcash
Jazcash

💻
Bjorn Stromberg
Bjorn Stromberg

💻
HappyTurtle
HappyTurtle

💻
Shuta Hirai
Shuta Hirai

💻
Servin Nissen
Servin Nissen

💻
Ben "Pig" Chu
Ben "Pig" Chu

💻
Makoto Yamada
Makoto Yamada

💻
schwyzl
schwyzl

💻
Degubi
Degubi

💻
Ibby Wedin
Ibby Wedin

💻
dbuck
dbuck

💻
Robert Long
Robert Long

💻
Max Kaye
Max Kaye

📖
Alejandro Laufer
Alejandro Laufer

🐛 💻
Gianmarco
Gianmarco

💻
David Peicho
David Peicho

💻
Joe Pea
Joe Pea

💻
Subhankar Pal
Subhankar Pal

💻
Sean T. McBeth
Sean T. McBeth

💻
Arthur LAURENT
Arthur LAURENT

💻
Serena Li
Serena Li

💻
cosformula
cosformula

💻
Peter Hanula
Peter Hanula

💻
Adam Thompson-Sharpe
Adam Thompson-Sharpe

💻
noname
noname

💻
Greg Schafer
Greg Schafer

💻
SuperSodaSea
SuperSodaSea

💻
Matt Rossman
Matt Rossman

💻
Alex Pineda
Alex Pineda

💻
Lucas
Lucas

📖
Maciej Ziarkowski
Maciej Ziarkowski

💻
Suprhimp
Suprhimp

💻
Stephen Li
Stephen Li

💻
Moritz Cremer
Moritz Cremer

💻
LuchoTurtle
LuchoTurtle

💻
Marcel Wiessler
Marcel Wiessler

💻
Josh Stern
Josh Stern

💻
Dan Rose
Dan Rose

💻
Dan Dolonius
Dan Dolonius

💻
Benjamin
Benjamin

💻
Antonio González Viegas
Antonio González Viegas

💻
Don McCurdy
Don McCurdy

💻
Xavier Willemin
Xavier Willemin

💻
zooster
zooster

💻
Anderson Leite
Anderson Leite

💻
Guillaume Fradin
Guillaume Fradin

💻
Heaust Azure
Heaust Azure

💻
Joe Tipping
Joe Tipping

💻
Lucas Garron
Lucas Garron

💻
Marc-Stefan Cassola
Marc-Stefan Cassola

💻
Piotr Błażejewicz (Peter Blazejewicz)
Piotr Błażejewicz (Peter Blazejewicz)

💻
Victoria Shadrina
Victoria Shadrina

💻
Will Stott
Will Stott

💻
demike
demike

💻
Michael サイトー 中村 Bashurov
Michael サイトー 中村 Bashurov

💻
Jack Bonaguro
Jack Bonaguro

💻
Rafael Sliveira Cordeiro
Rafael Sliveira Cordeiro

💻 📖
HEOJUNFO
HEOJUNFO

💻
Olli Etuaho
Olli Etuaho

💻
Mathis Brossier
Mathis Brossier

💻
Ollie Etherington
Ollie Etherington

💻 🐛
Mikael Pettersson
Mikael Pettersson

💻
Tom Harley
Tom Harley

💻
Ondřej Španěl
Ondřej Španěl

🐛 💻 📖 🚧
Yönet
Yönet

💻

FAQ

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.