eslint-plugin-expect-type
v0.4.3
Published
ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩
Downloads
26,346
Readme
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.ts
definition files. - Vitest: Includes
assertType
andexpectTypeOf
assertions.
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
💙 This package was templated with create-typescript-app.