ts-exhaustive-check
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

ts-exhaustive-check

npm version MIT license

Exhaustive check for typescript type never.

Description

This package has a single function called exhaustiveCheck that just checks if a typescript type is of type never.

It will save you one line of code in the default case of switch statements if you have strictNullChecks enabled.

For more information see discriminated-unions and typescript issue 6155.

Usage

yarn add ts-exhaustive-check
import { exhaustiveCheck } from "ts-exhaustive-check";
 
interface Square {
  kind: "square";
  size: number;
}
 
interface Rectangle {
  kind: "rectangle";
  width: number;
  height: number;
}
 
interface Circle {
  kind: "circle";
  radius: number;
}
 
type Shape = Square | Rectangle | Circle;
 
function area(s: Shape) {
  switch (s.kind) {
    case "square":
      return s.size * s.size;
    case "rectangle":
      return s.width * s.height;
    case "circle":
      return Math.PI * s.radius * s.radius;
    default:
      return exhaustiveCheck(s);
  }
}

Without this package the default case in the switch statement would have been this:

function area(s: Shape) {
  switch (s.kind) {
    ...
    default:
      const _exhaustiveCheck: never = s;
      return _exhaustiveCheck;
  }
}

Readme

Keywords

none

Package Sidebar

Install

npm i ts-exhaustive-check

Weekly Downloads

240

Version

1.0.0

License

MIT

Last publish

Collaborators

  • timmotoo
  • rassva
  • zlafil
  • johkah
  • dividstefansvensson
  • erieng
  • johankristiansson
  • adam.luotonen
  • jonaskello
  • bjolind
  • geon
  • marsve
  • henbr
  • josef.dagson
  • oskdah