Fitbit SDK Types ✔
Add types to your Fitbit CLI project and work safely with TypeScript preventing you of doing stupid mistakes.
⚙ How to use in your app project
- First, create your Fitbit CLI project following the official instructions at https://dev.fitbit.com/build/guides/command-line-interface/.
- Then, from that project root, you can run:
npx fitbit-sdk-types apply-js
to enhance your existing Fitbit project with autocomplete and soft checks.- Or
npx fitbit-sdk-types apply-ts
to convert your project to TypeScript and have all the features.
You can also do it manually wit the following basic configuration files:
{
"extends": "../tsconfig.json",
"include": ["**/*.ts", "../node_modules/fitbit-sdk-types/types/device"]
}
{
"extends": "../tsconfig.json",
"include": ["**/*.ts", "../node_modules/fitbit-sdk-types/types/companion"]
}
{
"extends": "../tsconfig.json",
"include": [
"**/*.ts",
"**/*.tsx",
"../node_modules/fitbit-sdk-types/types/settings"
]
}
{
"extends": "./node_modules/@fitbit/sdk/sdk-tsconfig.json"
}
Benefits of using types
Discoverability
Know what is available to build your ideas right from your code.
Enumerated and strict string literals
Also in JSX for settings
Integrated with the Fitbit CLI build process
It is fully integrated within the Fitbit CLI build process that already uses TypeScript. With this approach you are just extending its knowledge about what can you use and how.
So if your code is not ok, then it won't build. That way it will prevent you from wasting a lot of time with typos, undefined functions and trivial bugs, letting you focus on what really matters.
Code error, so the build process fails
Examples
You can see a ton of official examples working as tests right here, under the ./test-code-samples
path.
Gotchas
Be strict...
- 🧐 To have a full type experience: add the
strict
mode to your tsconfig.json:
{
"compilerOptions": {
"strict": true
}
}
... Or not
You can always place // @ts-ignore
right above that line of code that you know that should work, and probably needs to have it's typings fixed.
SDK Support
Only the latest SDK version is supported. Also don't expect this project version to match the official SDK version.
Contributing
❗ Open an issue
If you have a question, suggestion or bug report, don't be shy and open an issue 🎈.
💪 Make a PR
- The use cases you think that must be covered, under a meaningful section inside test-code-samples/.
- The type definition in the appropiate types/ file.
- If possible, a link to the official documentation or community forum thread.