Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/joshuakgoldberg/eslint-plugin-expect-type

ESLint plugin with ^? Twoslash, $ExpectError, and $ExpectType type assertions. 🧩
https://github.com/joshuakgoldberg/eslint-plugin-expect-type

eslint eslint-plugin expect-type typescript typescript-eslint

Last synced: 4 days ago
JSON representation

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

Awesome Lists containing this project

README

        

eslint-plugin-expect-type

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

All Contributors: 15 πŸ‘ͺ

Contributor Covenant
Codecov Test Coverage
License: Apache-2.0
npm package version
TypeScript: Strict

```ts
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:

```sh
npm i -D eslint-plugin-expect-type
```

> See [typescript-eslint's Getting Started docs](https://typescript-eslint.io/docs) for how to run ESLint on TypeScript files.

## Usage

Add the following options to your [ESLint configuration file](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new):

```ts
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](https://eslint.org/docs/latest/user-guide/configuring/configuration-files):

```json
{
"extends": ["plugin:expect-type/recommended"],
"plugins": ["expect-type"]
}
```

## Rules

πŸ’Ό Configurations enabled in.\
βœ… Set in the `recommended` configuration.\
πŸ”§ Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
πŸ’­ Requires [type information](https://typescript-eslint.io/linting/typed-linting).

| Name | Description | πŸ’Ό | πŸ”§ | πŸ’­ |
| :----------------------------- | :------------------------------------------ | :- | :- | :- |
| [expect](docs/rules/expect.md) | Expects type error, type snapshot, or type. | βœ… | πŸ”§ | πŸ’­ |

## References

You might consider using other popular libraries and tools that can run type assertions:

- **[expect-type](https://github.com/mmkal/expect-type)**: Provides functions that return assorted generic type assertion methods, such as `expectTypeOf('abc').toMatchTypeOf()`.
- **[ts-expect](https://github.com/TypeStrong/ts-expect)**: Provides generic type assertion function, used like `expectType('abc')()`.
- **[tsd](https://github.com/SamVerschueren/tsd)**: Allows writing tests specifically for `.d.ts` definition files.
- **[TSTyche](https://tstyche.org)**: 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](https://vitest.dev/guide/testing-types.html)**: Includes `assertType` and `expectTypeOf` assertions.

## TypeScript Version Support

`eslint-plugin-expect-type` mirrors the [DefinitelyTyped TypeScript Support Window](https://github.com/DefinitelyTyped/DefinitelyTyped/#support-window).
Roughly, that's major versions of TypeScript less than 2 years old.

## Appreciation

Many thanks to [@ibezkrovnyi](https://github.com/ibezkrovnyi) for creating the initial version and core infrastructure of this package! πŸ’–

## Contributors



Andrew Branch
Andrew Branch

πŸ’»
Batuhan Wilhelm
Batuhan Wilhelm

πŸ› πŸ’»
Colin
Colin

πŸ›
CΓ©dric Exbrayat
CΓ©dric Exbrayat

πŸ›
Dan Vanderkam
Dan Vanderkam

πŸ’» 🚧
Daniel Nagy
Daniel Nagy

πŸ›
Dominik Dorfmeister
Dominik Dorfmeister

πŸ“–


Francesco Trotta
Francesco Trotta

πŸ’» πŸ›
Igor Bezkrovnyi
Igor Bezkrovnyi

πŸ› πŸ’» πŸ“– 🚧
Jake Bailey
Jake Bailey

πŸ’»
Josh Goldberg ✨
Josh Goldberg ✨

πŸ› πŸ’» πŸ“– 🚧 πŸš‡ πŸ€” πŸ”§
Russell Davis
Russell Davis

πŸ’»
Tom Mrazauskas
Tom Mrazauskas

πŸ“–
detachhead
detachhead

πŸ€”


nirtamir2
nirtamir2

πŸ“–

> πŸ’™ This package was templated with [create-typescript-app](https://github.com/JoshuaKGoldberg/create-typescript-app).