eslint-plugin-expect-type
eslint-plugin-expect-type copied to clipboard
ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩
eslint-plugin-expect-type
ESLint plugin with `^?` Twoslash, `$ExpectError`, and `$ExpectType` type assertions. 🧩
let value = 9001;
// ^? let value: number
// $ExpectError
value = "over nine thousand";
// $ExpectType number
9001;
Installation
Make sure you have TypeScript and @typescript-eslint/parser installed, then install the plugin:
npm i -D eslint-plugin-expect-type
See typescript-eslint's Getting Started docs for how to run ESLint on TypeScript files.
Usage
Add the following options to your ESLint configuration file:
import expectType from "eslint-plugin-expect-type/configs/recommended";
export default [
// your other ESLint configurations
expectType,
];
Then, you'll be able to use ^?, $ExpectError, $ExpectType, and $ExpectTypeSnapshot comments in code assert on types.
Usage (Legacy Config)
If you're still using the legacy ESLint configuration file format:
{
"extends": ["plugin:expect-type/recommended"],
"plugins": ["expect-type"]
}
Rules
💼 Configurations enabled in.
✅ Set in the recommended configuration.
🔧 Automatically fixable by the --fix CLI option.
💭 Requires type information.
| Name | Description | 💼 | 🔧 | 💭 |
|---|---|---|---|---|
| expect | Expects type error, type snapshot, or type. | ✅ | 🔧 | 💭 |
References
You might consider using other popular type assertion libraries in the TypeScript ecosystem:
- expect-type: Provides functions that return assorted generic type assertion methods, such as
expectTypeOf('abc').toMatchTypeOf<string>(). - ts-expect: Provides generic type assertion function, used like
expectType<string>('abc')(). - tsd: Allows writing tests specifically for
.d.tsdefinition files. - Vitest: Includes
assertTypeandexpectTypeOfassertions.
TypeScript Version Support
eslint-plugin-expect-type mirrors the DefinitelyTyped TypeScript Support Window.
Roughly, that's major versions of TypeScript less than 2 years old.
Appreciation
Many thanks to @ibezkrovnyi for creating the initial version and core infrastructure of this package! 💖
Contributors
Batuhan Wilhelm 🐛 💻 |
Colin 🐛 |
Dan Vanderkam 💻 🚧 |
Daniel Nagy 🐛 |
Dominik Dorfmeister 📖 |
Igor Bezkrovnyi 🐛 💻 📖 🚧 |
Josh Goldberg ✨ 🐛 💻 📖 🚧 🚇 🤔 |
Russell Davis 💻 |
detachhead 🤔 |
nirtamir2 📖 |
💙 This package was templated with create-typescript-app.