@samual/types
This package was split from @samual/lib to contain the types I regularly use.
View the docs.
import type {
AnyFunction, Async, Brand, Cloneable, Falsy, IntersectUnion, JsonValue, LaxPartial, NonFalsy, PickByValue, Rejecter,
Replace, Resolver, Slice1, ValueOf
} from "@samual/types"
let functions: AnyFunction[] = []
let resolver: Resolver<number>
let rejecter: Rejecter
let promiseWithResolvers = Promise.withResolvers<number>()
resolver = promiseWithResolvers.resolve
rejecter = promiseWithResolvers.reject
function myAsyncWrapper<T extends AnyFunction>(toWrap: T): Async<T> {
}
let fooJson = JSON.stringify({ … } satisifes JsonValue)
let fooParsed = JSON.parse(fooJson) as JsonValue
const clonedFoo = structuredClone(foo satisfies Cloneable)
worker.postMessage(foo satisfies Cloneable)
type FooOptions = {
bar: number
baz: string
}
export function foo(options: LaxPartial<FooOptions>) {
}
type Foo = Slice1<[ 1, 2, 3 ]>
type ConditionalFoo<T> = T extends Falsy ? DoOneThing : OtherwiseDoSomethingElse
type NonFalsyJsonValue = NonFalsy<JsonValue>
type Foo = IntersectUnion<{ a: number } | { b: string }>
type Foo = ValueOf<{ a: 1, b: 2, c: 3 }>
type Bar = ValueOf<[ 1, 2, 3 ]>
type Foo = PickByValue<{ a: 1, b: "2", c: 3, d: "4" }, number>
type Foo = Replace<{ a: string, b: string }, { b: number }>
type CheckedString = Brand<string, { readonly CheckedString: unique symbol }[`CheckedString`]>