JoshuaKGoldberg/eslint-plugin-expect-type

ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩

120

stars

772

commits

TypeScript

primary language

Sep 2, 2026

updated

eslint
eslint-plugin
expect-type
typescript
typescript-eslint

README

eslint-plugin-expect-type

ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩

All Contributors: 16 πŸ‘ͺ Contributor Covenant Codecov Test Coverage License: Apache-2.0 npm package version TypeScript: Strict

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,
];

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.

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.

NameDescriptionπŸ’ΌπŸ”§πŸ’­
expectExpects type error, type snapshot, or type.βœ…πŸ”§πŸ’­

References

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() and test() helpers, expect style assertions and a mighty test runner which allows to use specified version of TypeScript.
  • Vitest: Includes assertType and expectTypeOf 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.

Contributors

renovate[bot]

656 commits

JoshuaKGoldberg

63 commits

ibezkrovnyi

20 commits

JoshuaKGoldberg/eslint-plugin-expect-type

ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩

120

stars

772

commits

TypeScript

primary language

Sep 2, 2026

updated

eslint
eslint-plugin
expect-type
typescript
typescript-eslint

README

eslint-plugin-expect-type

ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩

All Contributors: 16 πŸ‘ͺ Contributor Covenant Codecov Test Coverage License: Apache-2.0 npm package version TypeScript: Strict

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,
];

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.

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.

NameDescriptionπŸ’ΌπŸ”§πŸ’­
expectExpects type error, type snapshot, or type.βœ…πŸ”§πŸ’­

References

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() and test() helpers, expect style assertions and a mighty test runner which allows to use specified version of TypeScript.
  • Vitest: Includes assertType and expectTypeOf 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.

Contributors

renovate[bot]

656 commits

JoshuaKGoldberg

63 commits

ibezkrovnyi

20 commits

Languages

TypeScript

93.8%

JavaScript

6.2%