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;
  }
}

/ts-exhaustive-check/

    Package Sidebar

    Install

    npm i ts-exhaustive-check

    Weekly Downloads

    397

    Version

    1.0.0

    License

    MIT

    Last publish

    Collaborators

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