A simple and lightweight way to create a safe result in Typescript
Because in sometimes, we need to use safe conditions with try/catch, but we not want use blocks
Version | Documentation |
---|---|
unreleased | https://github.com/thadeu/ts-utility/blob/main/README.md |
kind | branch | javascript |
---|---|---|
unreleased | main | >= 14.x, <= 21.x |
Use Yarn
yarn add @thadeu/ts-utility
or use NPM
npm i @thadeu/ts-utility
or use PNPM
pnpm add @thadeu/ts-utility
or use Github directly
pnpm add github:thadeu/ts-utility
and then, enjoy!
For example:
Imagine that you have an class like this:
class User {
static async all() {
return [{ id: 1 }, { id: 2 }]
}
static async throwed() {
throw new Error(`User not found`)
}
}
Now, look it.
import { Try } from '@thadeu/ts-utility'
When success, you receive promise resolved.
let tryOptions = {
onError: error => {
// console.log(error)
return []
},
}
let result = await Try(User.all, tryOptions)
// or
let result = await Try(_ => User.all(), tryOptions)
// result => [{ id: 1 }, { id: 2 }]
When fail you receive onError callback OR null
let tryOptions = {
onError: async error => {
// console.log(error)
return []
},
}
let result = await Try(User.throwed, tryOptions)
// result => []
let tryOptions = {
onError: async error => {
// console.log(error)
return []
},
}
let result = await Try(async () => User.throwed(params), tryOptions)
// result => []
Others examples.
let counter = 0
let tryOptions = { max: 3, onError: {}, onRetry: (count, isReached) => (counter = count) }
await Try(_ => JSON.parse('{'), tryOptions)
expect(counter).toEqual(3)
let counter = 0
let tryOptions = {
max: 3,
onError: {},
onRetry: count => (counter = count)
}
let result = await Try(_ => JSON.parse('{ "user": "1" }'), tryOptions)
expect(counter).toEqual(0)
expect(result).toEqual({ user: '1' })
Using exponential parameter
let result = await Try(_ => JSON.parse('{'), {
onError: {},
max: 3,
exponential: 2
})
expect(result).toEqual({})
Without configuration, because we use only JavaScript. ❤️
After checking out the repo, install dependencies. Then, run test
to run the tests.
Bug reports and pull requests are welcome on GitHub at https://github.com/thadeu/ts-utility. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
The gem is available as open source under the terms of the MIT License.