@internetarchive/result-type v0.0.1
IAUX Result Type
A generic Result interface for returning type-safe responses and errors.
Installation
> yarn add @internetarchive/result-typeUsage
Result
Result is a generic interface for returning a response with typesafe value and error handling.
import { Result } from '@internetarchive/result-type';
enum FooErrorType {
networkError,
decodingError,
}
class FooError extends Error {
type?: FooErrorType;
constructor(type: FooErrorType, message: string?) {
super(message);
this.type = type;
}
}
// success
const result: Result<string, FooError> = { success: 'foo' };
const value = result.success;
if (value) {
console.debug('do something with `value`');
}
// error
const result: Result<string, FooError> = {
error: new FooError(FooErrorType.decodingError),
};
if (result.error) {
switch (result.error) {
case FooErrorType.networkError:
console.debug('handle network error');
break;
case FooErrorType.decodingError:
console.debug('handle decoding error');
break;
default:
console.debug('unknown error');
}
}Local Demo with web-dev-server
yarn startTo run a local development server that serves the basic demo located in demo/index.html
Testing with Web Test Runner
To run the suite of Web Test Runner tests, run
yarn run testTo run the tests in watch mode (for <abbr title="test driven development">TDD</abbr>, for example), run
yarn run test:watchLinting with ESLint, Prettier, and Types
To scan the project for linting errors, run
yarn run lintYou can lint with ESLint and Prettier individually as well
yarn run lint:eslintyarn run lint:prettierTo automatically fix many linting errors, run
yarn run formatYou can format using ESLint and Prettier individually as well
yarn run format:eslintyarn run format:prettierTooling configs
For most of the tools, the configuration is in the package.json to reduce the amount of files in your project.
If you customize the configuration a lot, you can consider moving them to individual files.