ESLint plugin with ^?
Twoslash, $ExpectError
, and $ExpectType
type assertions. 🧩
let value = 9001;
// ^? let value: number
// $ExpectError
value = "over nine thousand";
// $ExpectType number
9001;
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.
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,
];
For CommonJS, use
const expectType = require("eslint-plugin-expect-type/configs/recommended").default;
.
Then, you'll be able to use ^?
, $ExpectError
, $ExpectType
, and $ExpectTypeSnapshot
comments in code assert on types.
If you're still using the legacy ESLint configuration file format:
{
"extends": ["plugin:expect-type/recommended"],
"plugins": ["expect-type"]
}
💼 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. | ✅ | 🔧 | 💭 |
You might consider using other popular libraries and tools that can run type assertions:
- 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. - TSTyche: A type testing tool that ships with
describe()
andtest()
helpers,expect
style assertions and a mighty test runner which allows to use specified version of TypeScript. - Vitest: Includes
assertType
andexpectTypeOf
assertions.
eslint-plugin-expect-type
mirrors the DefinitelyTyped TypeScript Support Window.
Roughly, that's major versions of TypeScript less than 2 years old.
Many thanks to @ibezkrovnyi for creating the initial version and core infrastructure of this package! 💖
💙 This package was templated with create-typescript-app.