A generic Result interface for returning type-safe responses and errors.
> yarn add @internetarchive/result-type
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');
}
}
yarn start
To run a local development server that serves the basic demo located in demo/index.html
To run the suite of Web Test Runner tests, run
yarn run test
To run the tests in watch mode (for <abbr title="test driven development">TDD</abbr>, for example), run
yarn run test:watch
To scan the project for linting errors, run
yarn run lint
You can lint with ESLint and Prettier individually as well
yarn run lint:eslint
yarn run lint:prettier
To automatically fix many linting errors, run
yarn run format
You can format using ESLint and Prettier individually as well
yarn run format:eslint
yarn run format:prettier
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.