2.0.0 • Published 1 year ago

ts-unreachable v2.0.0

Weekly downloads
56
License
MIT
Repository
github
Last release
1 year ago

Unreachable for TypeScript

Utility function for exhaustiveness checking with TypeScript.

Installation

npm install --save ts-unreachable

Usage

import unreachable from 'ts-unreachable'

type Shape =
  | { kind: 'square', size: number }
  | { kind: 'rectangle', width: number, height: number }
  | { kind: 'circle', radius: number }

function area (shape: Shape): number {
  if (shape.kind === 'square') {
    return shape.size ** 2
  }

  if (shape.kind === 'rectangle') {
    return shape.height * shape.width
  }

  if (shape.kind === 'circle') {
    return Math.PI * shape.radius ** 2
  }

  return unreachable(shape) // (1)
}
  1. Without the final call to unreachable, TypeScript would report the following error:

    Function lacks ending return statement and return type does not include 'undefined'. (2366)

    Calling the function with an invalid kind from JavaScript would also return undefined instead of throwing a TypeError.

Related Packages

Prior Art