ts-optchain
- Version 0.1.8
- Published
- 19.2 kB
- No dependencies
- MIT license
Install
npm i ts-optchainyarn add ts-optchainpnpm add ts-optchainOverview
Optional Chaining for TypeScript
Index
Functions
Interfaces
Type Aliases
Functions
function oc
oc: <T>(data?: T) => TSOCType<T>;Optional chaining with default values. To inspect a property value in a tree-like structure, invoke it as a function, optionally passing a default value.
Example 1
// Given: const x = oc({ a: 'hello', b: { d: 'world' }, c: [-100, 200, -300], });
// Then: x.a() === 'hello' x.b.d() === 'world' x.c[0]() === -100 x.c[100]() === undefined x.c[100](1234) === 1234 x.c.map((e) => e()) === [-100, 200, -300] x.d.e() === undefined x.d.e('optional default value') === 'optional default value' (x as any).y.z.a.b.c.d.e.f.g.h.i.j.k() === undefined
Interfaces
interface TSOCAny
interface TSOCAny extends TSOCDataAccessor<any> {}Data accessor interface to dereference the value of an
anytype. TSOCDataAccessor
index signature
[K: string]: TSOCAny;interface TSOCArrayWrapper
interface TSOCArrayWrapper<T> {}TSOCArrayWrappergives TypeScript visibility into theTSOCTypevalues of an array without exposing Array methods (it is problematic to attempt to invoke methods during the course of an optional chain traversal).
property length
length: TSOCType<number>;index signature
[K: number]: TSOCType<T>;interface TSOCDataAccessor
interface TSOCDataAccessor<T> {}Data accessor interface to dereference the value of the
TSOCType.
call signature
(noDefaultValue?: undefined): Defined<T> | undefined;Data accessor without a default value. If no data exists,
undefinedis returned.
call signature
(defaultValue: NonNullable<T>): NonNullable<T>;Data accessor with default value.
call signature
(nullDefaultValue: T extends null ? null : never): Defined<T>;Type Aliases
type Defined
type Defined<T> = Exclude<T, undefined>;A generic type that cannot be
undefined.
type TSOCDataWrapper
type TSOCDataWrapper<T> = 0 extends 1 & T // Is T any? (https://stackoverflow.com/questions/49927523/disallow-call-with-any/49928360#49928360) ? TSOCAny : T extends any[] // Is T array-like? ? TSOCArrayWrapper<T[number]> : T extends object // Is T object-like? ? TSOCObjectWrapper<T> : TSOCDataAccessor<T>;TSOCDataWrapperselects betweenTSOCArrayWrapper,TSOCObjectWrapper, andTSOCDataAccessorto wrap Arrays, Objects and all other types respectively.
type TSOCObjectWrapper
type TSOCObjectWrapper<T> = { [K in keyof T]-?: TSOCType<T[K]> };TSOCObjectWrappergives TypeScript visibility into the properties of anTSOCTypeobject at compile-time.
type TSOCType
type TSOCType<T> = TSOCDataAccessor<T> & TSOCDataWrapper<NonNullable<T>>;An object that supports optional chaining
Package Files (1)
Dependencies (0)
No dependencies.
Dev Dependencies (6)
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/ts-optchain.
- Markdown[](https://www.jsdocs.io/package/ts-optchain)
- HTML<a href="https://www.jsdocs.io/package/ts-optchain"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 2663 ms. - Missing or incorrect documentation? Open an issue for this package.
