diff options
| author | Akshay Nair <phenax5@gmail.com> | 2023-01-14 18:16:41 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2023-01-14 18:16:41 +0530 |
| commit | e75a5a15912b8f297fe9c9747f574486d6c4e334 (patch) | |
| tree | 603cd3b9fa68e6e0bd700fe66fede80e9ae657c9 /stdlib | |
| parent | 78e384c2f32996478edced59c837a348dec77e57 (diff) | |
| download | ts-types-lang-e75a5a15912b8f297fe9c9747f574486d6c4e334.tar.gz ts-types-lang-e75a5a15912b8f297fe9c9747f574486d6c4e334.zip | |
chore: adds some docs
Diffstat (limited to 'stdlib')
| -rw-r--r-- | stdlib/effect.ts | 46 | ||||
| -rw-r--r-- | stdlib/test.ts | 20 |
2 files changed, 61 insertions, 5 deletions
diff --git a/stdlib/effect.ts b/stdlib/effect.ts index 9b19197..4a994c4 100644 --- a/stdlib/effect.ts +++ b/stdlib/effect.ts @@ -1,12 +1,58 @@ +/** + * Generic interface for declaring effects + * @typeParam T - The output generated by the effect (defaults to `unknown`) + * + * @example + * ```ts + * interface MyEffect extends Effect<string[]> {} + * ``` + */ export interface Effect<T = unknown> { + /** @hidden */ output: T } +/** + * An implementation of `* -> *` higher-kinded type + * + * @typeParam Inp - The input type + * @typeParam Out - The output type + * + * @example + * You can define a return property for the function body + * and use `this['input']` to access the argument + * Uses - {@link util.ApplyK} + * + * ```ts + * interface SomeFunc extends Kind1<number, string> { + * return: `Your number is ${this['input']}`, + * } + * + * type result = ApplyK<SomeFunc, 200> + * ``` + */ export interface Kind1<Inp = unknown, Out = unknown> { input: Inp return: Out } +/** + * Generic function definition as a union of a kind and anonymous function + * + * @typeParam Inp - The input type + * @typeParam Out - The output type + * + * @example + * In addition to defining a kind (see - {@link Kind1}), + * you can also in some places, use inline lambda functions + * + * ```ts + * type main = Bind< + * ReadFile<"./file.txt">, + * <contents extends string>() => Print<contents> + * > + * ``` + */ export type Func<Inp = unknown, Out = unknown> = | Kind1<Inp, Out> | (<_T extends Inp>() => Out) diff --git a/stdlib/test.ts b/stdlib/test.ts index fd1045b..a3b1d80 100644 --- a/stdlib/test.ts +++ b/stdlib/test.ts @@ -2,11 +2,21 @@ import { Do, Effect, Kind1 } from './effect' import { Throw, Try } from './exception' import { Equals } from './util' -export interface Config { - // compileTimeTestFailures: false - // stopAtFailure: true // TODO: stopAtFailure -} - +/** + * Assert a boolean expression is true + * + * @typeParam _B - The boolean value to assert + * + * @throws {"assertion error"} if false + * + * @example + * Here's an example checking if `SomeValue` is not equal to [1,2,3] + * Uses - {@link util.Not}, {@link util.Equals} + * + * ```ts + * Assert<Not<Equals<SomeValue, [1, 2, 3]>>> + * ``` + */ export interface Assert<_B extends boolean> extends Effect {} export interface Test<_m extends string, _effs extends Effect[]> |
