biome-plugin-no-type-assertion
v1.0.2
Published
A biome plugin that disallows type assertions in TypeScript code.
Readme
biome-plugin-no-type-assertion
A Biome linter plugin that disallows type assertions in TypeScript code, encouraging the use of type guards and proper typing instead.
Installation
Install the plugin as a dev dependency:
npm install --save-dev biome-plugin-no-type-assertionor with your preferred package manager:
yarn add -D biome-plugin-no-type-assertion
pnpm add -D biome-plugin-no-type-assertion
bun add -D biome-plugin-no-type-assertionUsage
Add the plugin to your Biome configuration file (biome.json or biome.jsonc):
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"plugins": ["node_modules/biome-plugin-no-type-assertion/no-type-assertion.grit"]
}To ignore it
// biome-ignore lint/plugin/no-type-assertion: <reason>
const a = 5 as number;The plugin will now check your TypeScript code and report errors when it detects type assertions.
What it catches
The plugin detects only one form of type assertions in TypeScript (the most used):
as syntax: expression as Type
const a = 5 as number; // ❌ Error
const b = ["nope"] as string[]; // ❌ ErrorUnfortunately, due to limitations in the Grit pattern language, the plugin cannot currently detect type assertions using the angle-bracket syntax. Examples of unsupported cases include:
// These are "uncommon" type assertions that the plugin at the moment cannot catch
const b = <number>5;
console.log(<string>(<unknown>b));Why avoid type assertions?
Type assertions bypass TypeScript's type checker and can hide potential bugs. Instead, consider:
- Type guards: Use runtime checks with type predicates
- Proper typing: Define correct types at the source
- Type narrowing: Let TypeScript infer types through control flow analysis
Contributing
Contributions are welcome! Here's how to get started:
Setup
Clone the repository:
git clone https://github.com/albertodeago/biome-plugin-no-type-assertion.git cd biome-plugin-no-type-assertionInstall dependencies:
npm install
Development
The plugin is defined in no-type-assertion.grit using the Grit pattern language.
Testing
Run the test suite:
npm testTests are located in the test directory and use Vitest. Test fixtures can be found in test/fixtures.
Publishing
To publish a new version of the plugin:
- Update the version in
package.json. - Publish to npm:
npm publish - Tag the release in GitHub creating a Release with the changes.
License
MIT © Alberto De Agostini
