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

https://github.com/aikoven/assert-never

Helper function for exhaustive checks of discriminated unions in TypeScript
https://github.com/aikoven/assert-never

assert discriminated-unions never typescript

Last synced: 20 days ago
JSON representation

Helper function for exhaustive checks of discriminated unions in TypeScript

Awesome Lists containing this project

README

        

# Assert Never [![npm version][npm-image]][npm-url]

Helper function for [exhaustive checks][exhaustive-checks] of discriminated
unions in TypeScript.

## Installation

```
npm install --save assert-never
```

## Usage

```ts
import {assertNever} from "assert-never";

type A = {type: 'a'};
type B = {type: 'b'};
type Union = A | B;

function doSomething(arg: Union) {
if (arg.type === 'a') {
return something;
}

if (arg.type === 'b') {
return somethingElse;
}

// TS will error if there are other types in the union
// Will throw an Error when called at runtime. Use `assertNever(arg, true)`
// instead to fail silently.
return assertNever(arg);
}
```

[npm-image]: https://badge.fury.io/js/assert-never.svg
[npm-url]: https://badge.fury.io/js/assert-never
[exhaustive-checks]: https://basarat.gitbook.io/typescript/type-system/discriminated-unions#exhaustive-checks