Skip to content

A strongly typed Promise override for TypeScript

License

Notifications You must be signed in to change notification settings

emphori/promise

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Promise

A strongly typed drop-in replacement for Promises in TypeScript.

Features

  • Type-safe rejections greatly improve how errors are surfaced, and makes handling them an absolute joy.

  • A simplified .then type signature that disallows inline rejection handling in favour of explict calls to .catch when required.

  • Incrementally adoptable and backwards compatible with the weakly typed Promises shipped with TypeScript.

Installation

Promise is available from the NPM registry and as a GitHub Package. Whichever source you prefer to use, the installation should remain the same.

# Using NPM
npm install @emphori/promise -S

# Or, using Yarn
yarn add @emphori/promise

Examples

import { Promise } from '@emphori/promise'

// (userId: string) => Promise<User, UserNotFound>
function getUser(userId: string): Promise<User, UserNotFound> {
  return User.getById(userId).then((user) => {
    return user ?? Promise.reject(UserNotFound)
  })
}

Licence

This project is released under the MIT License. Enjoy responsibly ❤️