# everyday-types

> Everyday utility types

Latest version **1.1.0** (published 2022-08-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install everyday-types
pnpm add everyday-types
yarn add everyday-types
bun add everyday-types
```

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.0 |
| Published | 2022-08-07 |
| First published | 2022-05-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 1 |
| Unpacked size | 53.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | stagas |
| Maintainers | stagas |

## Links

- npm: https://www.npmjs.com/package/everyday-types
- Repository: https://git@github.com/stagas/everyday-types
- Homepage: https://github.com/stagas/everyday-types#readme
- Issues: https://github.com/stagas/everyday-types/issues
- npm.io page: https://npm.io/package/everyday-types

## Dependencies (1)

- [ts-toolbelt](https://npm.io/package/ts-toolbelt.md) 9.6.0

## Recent versions

- 1.1.0 (latest) — 2022-08-07
- 1.0.0 — 2022-07-29
- 0.1.0 — 2022-06-22
- 0.0.1 — 2022-05-26

## README

<h1>
everyday-types <a href="https://npmjs.org/package/everyday-types"><img src="https://img.shields.io/badge/npm-v1.1.0-F00.svg?colorA=000"/></a> <a href="src"><img src="https://img.shields.io/badge/loc-104-FFF.svg?colorA=000"/></a> <a href="https://cdn.jsdelivr.net/npm/everyday-types@1.1.0/dist/everyday-types.min.js"><img src="https://img.shields.io/badge/brotli-119b-333.svg?colorA=000"/></a> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-F0B.svg?colorA=000"/></a>
</h1>

<p></p>

Everyday utility types

<h4>
<table><tr><td title="Triple click to select and copy paste">
<code>npm i everyday-types </code>
</td><td title="Triple click to select and copy paste">
<code>pnpm add everyday-types </code>
</td><td title="Triple click to select and copy paste">
<code>yarn add everyday-types</code>
</td></tr></table>
</h4>

## API

<p>  <details id="AAt$126" title="TypeAlias" ><summary><span><a href="#AAt$126">#</a></span>  <code><strong>AAt</strong></code>    </summary>  <a href="src/string.ts#L3">src/string.ts#L3</a>  <ul><p><a href="#A$127">A</a> extends <a href="#List$144">List</a> ? number extends <a href="#A$127">A</a>  [<code>"length"</code>] ? <a href="#K$128">K</a> extends number | template-literal ? <a href="#A$127">A</a>  [never] | undefined : undefined : <a href="#K$128">K</a> extends keyof     <a href="#A$127">A</a> ? <a href="#A$127">A</a>  [<a href="#K$128">K</a>] : undefined : unknown extends <a href="#A$127">A</a> ? unknown : <a href="#K$128">K</a> extends keyof     <a href="#A$127">A</a> ? <a href="#A$127">A</a>  [<a href="#K$128">K</a>] : undefined</p>        </ul></details>  <details id="Cast$132" title="TypeAlias" ><summary><span><a href="#Cast$132">#</a></span>  <code><strong>Cast</strong></code>    </summary>  <a href="src/string.ts#L42">src/string.ts#L42</a>  <ul><p><a href="#A1$133">A1</a> extends <a href="#A2$134">A2</a> ? <a href="#A1$133">A1</a> : <a href="#A2$134">A2</a></p>        </ul></details>  <details id="Key$153" title="TypeAlias" ><summary><span><a href="#Key$153">#</a></span>  <code><strong>Key</strong></code>    </summary>  <a href="src/string.ts#L1">src/string.ts#L1</a>  <ul><p>string | number | symbol</p>        </ul></details>  <details id="LLength$135" title="TypeAlias" ><summary><span><a href="#LLength$135">#</a></span>  <code><strong>LLength</strong></code>     &ndash; Ask TS to re-check that <code>A1</code> extends <code>A2</code>.
And if it fails, <code>A2</code> will be enforced anyway.
Can also be used to add constraints on parameters.</summary>  <a href="src/string.ts#L40">src/string.ts#L40</a>  <ul><p><a href="#L$136">L</a>  [<code>"length"</code>]</p>        </ul></details>  <details id="List$144" title="TypeAlias" ><summary><span><a href="#List$144">#</a></span>  <code><strong>List</strong></code>    </summary>  <a href="src/string.ts#L2">src/string.ts#L2</a>  <ul><p><span>ReadonlyArray</span>&lt;<a href="#A$145">A</a>&gt;</p>        </ul></details>  <details id="Literal$146" title="TypeAlias" ><summary><span><a href="#Literal$146">#</a></span>  <code><strong>Literal</strong></code>    </summary>  <a href="src/string.ts#L11">src/string.ts#L11</a>  <ul><p>string | number | bigint | boolean</p>        </ul></details>  <details id="Pop$147" title="TypeAlias" ><summary><span><a href="#Pop$147">#</a></span>  <code><strong>Pop</strong></code>    </summary>  <a href="src/string.ts#L63">src/string.ts#L63</a>  <ul><p><a href="#L$148">L</a> extends readonly     [  rest, any  ] | readonly     [  rest, optional  ] ? <span>LBody</span> : <a href="#L$148">L</a></p>        </ul></details>  <details id="_Replace$137" title="TypeAlias" ><summary><span><a href="#_Replace$137">#</a></span>  <code><strong>_Replace</strong></code>    </summary>  <a href="src/string.ts#L47">src/string.ts#L47</a>  <ul><p><a href="#S$138">S</a> extends template-literal ? <a href="#Replace$10">Replace</a>&lt;template-literal, <a href="#R$139">R</a>, <a href="#W$140">W</a>&gt; : <a href="#S$138">S</a></p>        </ul></details>  <details id="__Split$149" title="TypeAlias" ><summary><span><a href="#__Split$149">#</a></span>  <code><strong>__Split</strong></code>    </summary>  <a href="src/string.ts#L50">src/string.ts#L50</a>  <ul><p><a href="#S$150">S</a> extends template-literal ? <a href="#__Split$149">__Split</a>&lt;<span>AS</span>, <a href="#D$151">D</a>, [  rest, <span>BS</span>  ]&gt; : [  rest, <a href="#S$150">S</a>  ]</p>        </ul></details><details id="String$1" title="Namespace" ><summary><span><a href="#String$1">#</a></span>  <code><strong>String</strong></code>    </summary>  <a href="src/string.ts#L1">src/string.ts#L1</a>  <ul>        <p>  <details id="At$2" title="TypeAlias" ><summary><span><a href="#At$2">#</a></span>  <code><strong>At</strong></code>    </summary>  <a href="src/string.ts#L10">src/string.ts#L10</a>  <ul><p><a href="#AAt$126">AAt</a>&lt;<a href="#Split$14">Split</a>&lt;<a href="#S$3">S</a>, <code>""</code>&gt;, <a href="#K$4">K</a>&gt;</p>        </ul></details><details id="Join$5" title="TypeAlias" ><summary><span><a href="#Join$5">#</a></span>  <code><strong>Join</strong></code>     &ndash; Concat many literals together</summary>  <a href="src/string.ts#L24">src/string.ts#L24</a>  <ul><p><span>_Join</span>&lt;<a href="#T$6">T</a>, <a href="#D$7">D</a>&gt; extends inferred ? <a href="#Cast$132">Cast</a>&lt;<span>X</span>, string&gt; : never</p>        </ul></details><details id="Length$8" title="TypeAlias" ><summary><span><a href="#Length$8">#</a></span>  <code><strong>Length</strong></code>    </summary>  <a href="src/string.ts#L43">src/string.ts#L43</a>  <ul><p><a href="#LLength$135">LLength</a>&lt;<a href="#Split$14">Split</a>&lt;<a href="#S$9">S</a>, <code>""</code>&gt;&gt;</p>        </ul></details><details id="Replace$10" title="TypeAlias" ><summary><span><a href="#Replace$10">#</a></span>  <code><strong>Replace</strong></code>    </summary>  <a href="src/string.ts#L44">src/string.ts#L44</a>  <ul><p><a href="#_Replace$137">_Replace</a>&lt;<a href="#S$11">S</a>, <a href="#R$12">R</a>, <a href="#W$13">W</a>&gt; extends inferred ? <a href="#Cast$132">Cast</a>&lt;<span>X</span>, string&gt; : never</p>        </ul></details><details id="Split$14" title="TypeAlias" ><summary><span><a href="#Split$14">#</a></span>  <code><strong>Split</strong></code>     &ndash; Split <code>S</code> by <code>D</code> into a [[List]]</summary>  <a href="src/string.ts#L62">src/string.ts#L62</a>  <ul><p><span>_Split</span>&lt;<a href="#S$15">S</a>, <a href="#D$16">D</a>&gt; extends inferred ? <a href="#Cast$132">Cast</a>&lt;<span>X</span>, string  []&gt; : never</p>        </ul></details></p></ul></details><details id="CustomElement$115" title="Interface" ><summary><span><a href="#CustomElement$115">#</a></span>  <code><strong>CustomElement</strong></code>    </summary>  <a href="src/everyday-types.ts#L83">src/everyday-types.ts#L83</a>  <ul>        <p>  <details id="attributeChangedCallback$116" title="Method" ><summary><span><a href="#attributeChangedCallback$116">#</a></span>  <code><strong>attributeChangedCallback</strong></code><em>(name, oldValue, newValue)</em>     &ndash; Callback that is invoked when one of the {@link withProperties} changes.</summary>    <ul>    <p>    <details id="name$118" title="Parameter" ><summary><span><a href="#name$118">#</a></span>  <code><strong>name</strong></code>     &ndash; Name of attribute</summary>    <ul><p>string</p>        </ul></details><details id="oldValue$119" title="Parameter" ><summary><span><a href="#oldValue$119">#</a></span>  <code><strong>oldValue</strong></code>     &ndash; Old value</summary>    <ul><p><code>null</code> | string</p>        </ul></details><details id="newValue$120" title="Parameter" ><summary><span><a href="#newValue$120">#</a></span>  <code><strong>newValue</strong></code>     &ndash; New value
</summary>    <ul><p><code>null</code> | string</p>        </ul></details>  <p><strong>attributeChangedCallback</strong><em>(name, oldValue, newValue)</em>  &nbsp;=&gt;  <ul>void</ul></p></p>    </ul></details><details id="connectedCallback$121" title="Method" ><summary><span><a href="#connectedCallback$121">#</a></span>  <code><strong>connectedCallback</strong></code><em>()</em>     &ndash; Invoked when the component is added to the document's DOM.</summary>    <ul>    <p>  <p>

In `connectedCallback()` you should setup tasks that should only occur when
the element is connected to the document. The most common of these is
adding event listeners to nodes external to the element, like a keydown
event handler added to the window.

```ts
connectedCallback() {
  super.connectedCallback();
  this.addEventListener('keydown', this._handleKeydown);
}
```

Typically, anything done in `connectedCallback()` should be undone when the
element is disconnected, in `disconnectedCallback()`.

</p>
    <p><strong>connectedCallback</strong><em>()</em>  &nbsp;=&gt;  <ul>void</ul></p></p>    </ul></details><details id="disconnectedCallback$123" title="Method" ><summary><span><a href="#disconnectedCallback$123">#</a></span>  <code><strong>disconnectedCallback</strong></code><em>()</em>     &ndash; Invoked when the component is removed from the document's DOM.</summary>    <ul>    <p>  <p>

This callback is the main signal to the element that it may no longer be
used. `disconnectedCallback()` should ensure that nothing is holding a
reference to the element (such as event listeners added to nodes external
to the element), so that it is free to be garbage collected.

```ts
disconnectedCallback() {
  super.disconnectedCallback();
  window.removeEventListener('keydown', this._handleKeydown);
}
```

An element may be re-connected after being disconnected.

</p>
    <p><strong>disconnectedCallback</strong><em>()</em>  &nbsp;=&gt;  <ul>void</ul></p></p>    </ul></details></p></ul></details><details id="EventHandler$33" title="Interface" ><summary><span><a href="#EventHandler$33">#</a></span>  <code><strong>EventHandler</strong></code>    </summary>  <a href="src/everyday-types.ts#L7">src/everyday-types.ts#L7</a>  <ul>    <p>    <details id="this$37" title="Parameter" ><summary><span><a href="#this$37">#</a></span>  <code><strong>this</strong></code>    </summary>    <ul><p><a href="#T$34">T</a></p>        </ul></details><details id="event$38" title="Parameter" ><summary><span><a href="#event$38">#</a></span>  <code><strong>event</strong></code>    </summary>    <ul><p><a href="#E$35">E</a> &amp; {<p>  <details id="currentTarget$40" title="Property" ><summary><span><a href="#currentTarget$40">#</a></span>  <code><strong>currentTarget</strong></code>    </summary>  <a href="src/everyday-types.ts#L8">src/everyday-types.ts#L8</a>  <ul><p><a href="#T$34">T</a></p>        </ul></details><details id="target$41" title="Property" ><summary><span><a href="#target$41">#</a></span>  <code><strong>target</strong></code>    </summary>  <a href="src/everyday-types.ts#L8">src/everyday-types.ts#L8</a>  <ul><p><span>Element</span></p>        </ul></details></p>}</p>        </ul></details>  <p><strong>EventHandler</strong><em>(this, event)</em>  &nbsp;=&gt;  <ul>any</ul></p></p>    </ul></details><details id="SafeMap$93" title="Interface" ><summary><span><a href="#SafeMap$93">#</a></span>  <code><strong>SafeMap</strong></code>    </summary>  <a href="src/everyday-types.ts#L62">src/everyday-types.ts#L62</a>  <ul>        <p>  <details id="get$97" title="Method" ><summary><span><a href="#get$97">#</a></span>  <code><strong>get</strong></code><em>(v)</em>    </summary>    <ul>    <p>    <details id="v$99" title="Parameter" ><summary><span><a href="#v$99">#</a></span>  <code><strong>v</strong></code>    </summary>    <ul><p><a href="#K$100">K</a></p>        </ul></details>  <p><strong>get</strong><em>(v)</em>  &nbsp;=&gt;  <ul><a href="#T$101">T</a></ul></p></p>    </ul></details><details id="has$94" title="Method" ><summary><span><a href="#has$94">#</a></span>  <code><strong>has</strong></code><em>(v)</em>    </summary>    <ul>    <p>    <details id="v$96" title="Parameter" ><summary><span><a href="#v$96">#</a></span>  <code><strong>v</strong></code>    </summary>    <ul><p><a href="#K$100">K</a></p>        </ul></details>  <p><strong>has</strong><em>(v)</em>  &nbsp;=&gt;  <ul>boolean</ul></p></p>    </ul></details></p></ul></details><details id="SafeWeakMap$102" title="Interface" ><summary><span><a href="#SafeWeakMap$102">#</a></span>  <code><strong>SafeWeakMap</strong></code>    </summary>  <a href="src/everyday-types.ts#L67">src/everyday-types.ts#L67</a>  <ul>        <p>  <details id="get$106" title="Method" ><summary><span><a href="#get$106">#</a></span>  <code><strong>get</strong></code><em>(v)</em>    </summary>    <ul>    <p>    <details id="v$108" title="Parameter" ><summary><span><a href="#v$108">#</a></span>  <code><strong>v</strong></code>    </summary>    <ul><p><a href="#K$109">K</a></p>        </ul></details>  <p><strong>get</strong><em>(v)</em>  &nbsp;=&gt;  <ul><a href="#T$110">T</a></ul></p></p>    </ul></details><details id="has$103" title="Method" ><summary><span><a href="#has$103">#</a></span>  <code><strong>has</strong></code><em>(v)</em>    </summary>    <ul>    <p>    <details id="v$105" title="Parameter" ><summary><span><a href="#v$105">#</a></span>  <code><strong>v</strong></code>    </summary>    <ul><p><a href="#K$109">K</a></p>        </ul></details>  <p><strong>has</strong><em>(v)</em>  &nbsp;=&gt;  <ul>boolean</ul></p></p>    </ul></details></p></ul></details><details id="Any$92" title="TypeAlias" ><summary><span><a href="#Any$92">#</a></span>  <code><strong>Any</strong></code>    </summary>  <a href="src/everyday-types.ts#L60">src/everyday-types.ts#L60</a>  <ul><p>any</p>        </ul></details><details id="Chunk$17" title="TypeAlias" ><summary><span><a href="#Chunk$17">#</a></span>  <code><strong>Chunk</strong></code>    </summary>  <a href="src/everyday-types.ts#L3">src/everyday-types.ts#L3</a>  <ul><p><a href="#N$19">N</a> extends <a href="#N$19">N</a> ? number extends <a href="#N$19">N</a> ? <a href="#T$18">T</a>  [] : <a href="#_Chunk$20">_Chunk</a>&lt;<a href="#T$18">T</a>, <a href="#N$19">N</a>, [    ]&gt; : never</p>        </ul></details><details id="Class$24" title="TypeAlias" ><summary><span><a href="#Class$24">#</a></span>  <code><strong>Class</strong></code>    </summary>  <a href="src/everyday-types.ts#L5">src/everyday-types.ts#L5</a>  <ul><p><details id="__type$25" title="Constructor" ><summary><span><a href="#__type$25">#</a></span>  <em>(args)</em>    </summary>  <a href="src/everyday-types.ts#L5">src/everyday-types.ts#L5</a>  <ul>    <p>  <details id="__type$26" title="ConstructorSignature" ><summary><span><a href="#__type$26">#</a></span>  <code><strong>new</strong></code><em>()</em>    </summary>    <ul><p><a href="#T$28">T</a></p>      <p>  <details id="args$27" title="Parameter" ><summary><span><a href="#args$27">#</a></span>  <code><strong>args</strong></code>    </summary>    <ul><p>any  []</p>        </ul></details></p>  </ul></details></p>    </ul></details></p>        </ul></details><details id="Ctor$29" title="TypeAlias" ><summary><span><a href="#Ctor$29">#</a></span>  <code><strong>Ctor</strong></code>    </summary>  <a href="src/everyday-types.ts#L6">src/everyday-types.ts#L6</a>  <ul><p><details id="__type$30" title="Constructor" ><summary><span><a href="#__type$30">#</a></span>  <em>(args)</em>    </summary>  <a href="src/everyday-types.ts#L6">src/everyday-types.ts#L6</a>  <ul>    <p>  <details id="__type$31" title="ConstructorSignature" ><summary><span><a href="#__type$31">#</a></span>  <code><strong>new</strong></code><em>()</em>    </summary>    <ul><p>unknown</p>      <p>  <details id="args$32" title="Parameter" ><summary><span><a href="#args$32">#</a></span>  <code><strong>args</strong></code>    </summary>    <ul><p>any  []</p>        </ul></details></p>  </ul></details></p>    </ul></details></p>        </ul></details><details id="CustomElementConstructor$112" title="TypeAlias" ><summary><span><a href="#CustomElementConstructor$112">#</a></span>  <code><strong>CustomElementConstructor</strong></code>    </summary>  <a href="src/everyday-types.ts#L74">src/everyday-types.ts#L74</a>  <ul><p><a href="#Class$24">Class</a>&lt;<a href="#CustomElement$115">CustomElement</a>&gt; &amp; {}</p>        </ul></details><details id="DetailOf$89" title="TypeAlias" ><summary><span><a href="#DetailOf$89">#</a></span>  <code><strong>DetailOf</strong></code>    </summary>  <a href="src/everyday-types.ts#L54">src/everyday-types.ts#L54</a>  <ul><p><a href="#Narrow$64">Narrow</a>&lt;<span>Parameters</span>&lt;<a href="#Narrow$64">Narrow</a>&lt;<a href="#Get$50">Get</a>&lt;<a href="#T$90">T</a>, <a href="#K$91">K</a>&gt;, <a href="#Fn$44">Fn</a>&lt;any, any&gt;&gt;&gt;  [<code>0</code>], <span>CustomEvent</span>&gt;  [<code>"detail"</code>]</p>        </ul></details><details id="EventKeys$42" title="TypeAlias" ><summary><span><a href="#EventKeys$42">#</a></span>  <code><strong>EventKeys</strong></code>    </summary>  <a href="src/everyday-types.ts#L10">src/everyday-types.ts#L10</a>  <ul><p>keyof     <a href="#EventsOf$87">EventsOf</a>&lt;<a href="#T$43">T</a>&gt;</p>        </ul></details><details id="EventsOf$87" title="TypeAlias" ><summary><span><a href="#EventsOf$87">#</a></span>  <code><strong>EventsOf</strong></code>    </summary>  <a href="src/everyday-types.ts#L33">src/everyday-types.ts#L33</a>  <ul><p>[K   in   <a href="#Keys$54">Keys</a>&lt;<a href="#T$88">T</a>&gt;  ]-?:  <a href="#Narrow$64">Narrow</a>&lt;<span>Parameters</span>&lt;<a href="#Narrow$64">Narrow</a>&lt;<a href="#Get$50">Get</a>&lt;<a href="#T$88">T</a>, <span>K</span>&gt;, <a href="#Fn$44">Fn</a>&lt;any, any&gt;&gt;&gt;  [<code>0</code>], <span>Event</span>&gt;</p>        </ul></details><details id="Fn$44" title="TypeAlias" ><summary><span><a href="#Fn$44">#</a></span>  <code><strong>Fn</strong></code>    </summary>  <a href="src/everyday-types.ts#L11">src/everyday-types.ts#L11</a>  <ul><p><details id="__type$45" title="Function" ><summary><span><a href="#__type$45">#</a></span>  <em>(args)</em>    </summary>    <ul>    <p>    <details id="args$47" title="Parameter" ><summary><span><a href="#args$47">#</a></span>  <code><strong>args</strong></code>    </summary>    <ul><p><a href="#T$48">T</a></p>        </ul></details>  <p><strong></strong><em>(args)</em>  &nbsp;=&gt;  <ul><a href="#R$49">R</a></ul></p></p>    </ul></details></p>        </ul></details><details id="Get$50" title="TypeAlias" ><summary><span><a href="#Get$50">#</a></span>  <code><strong>Get</strong></code>    </summary>  <a href="src/everyday-types.ts#L12">src/everyday-types.ts#L12</a>  <ul><p><a href="#T$51">T</a>  [<a href="#NarrowKey$61">NarrowKey</a>&lt;<a href="#K$52">K</a>, <a href="#T$51">T</a>&gt;]</p>        </ul></details><details id="Key$53" title="TypeAlias" ><summary><span><a href="#Key$53">#</a></span>  <code><strong>Key</strong></code>    </summary>  <a href="src/everyday-types.ts#L13">src/everyday-types.ts#L13</a>  <ul><p>number | string | symbol</p>        </ul></details><details id="Keys$54" title="TypeAlias" ><summary><span><a href="#Keys$54">#</a></span>  <code><strong>Keys</strong></code>    </summary>  <a href="src/everyday-types.ts#L14">src/everyday-types.ts#L14</a>  <ul><p>keyof     [K   in   keyof     <a href="#T$55">T</a>  ]:  <a href="#StringOf$82">StringOf</a>&lt;<span>K</span>&gt;</p>        </ul></details><details id="Mixable$56" title="TypeAlias" ><summary><span><a href="#Mixable$56">#</a></span>  <code><strong>Mixable</strong></code>    </summary>  <a href="src/everyday-types.ts#L15">src/everyday-types.ts#L15</a>  <ul><p>{} &amp; <span>Omit</span>&lt;<a href="#T$58">T</a>, <code>"constructor"</code>&gt;</p>        </ul></details><details id="Mutable$59" title="TypeAlias" ><summary><span><a href="#Mutable$59">#</a></span>  <code><strong>Mutable</strong></code>    </summary>  <a href="src/everyday-types.ts#L16">src/everyday-types.ts#L16</a>  <ul><p>[P   in   keyof     <a href="#T$60">T</a>  ]:  <a href="#T$60">T</a>  [<span>P</span>]</p>        </ul></details><details id="Narrow$64" title="TypeAlias" ><summary><span><a href="#Narrow$64">#</a></span>  <code><strong>Narrow</strong></code>    </summary>  <a href="src/everyday-types.ts#L18">src/everyday-types.ts#L18</a>  <ul><p><a href="#K$65">K</a> extends <a href="#T$66">T</a> ? <a href="#K$65">K</a> : never</p>        </ul></details><details id="NarrowKey$61" title="TypeAlias" ><summary><span><a href="#NarrowKey$61">#</a></span>  <code><strong>NarrowKey</strong></code>    </summary>  <a href="src/everyday-types.ts#L17">src/everyday-types.ts#L17</a>  <ul><p><a href="#Narrow$64">Narrow</a>&lt;<a href="#K$62">K</a>, keyof     <a href="#T$63">T</a>&gt;</p>        </ul></details><details id="NonNull$67" title="TypeAlias" ><summary><span><a href="#NonNull$67">#</a></span>  <code><strong>NonNull</strong></code>    </summary>  <a href="src/everyday-types.ts#L19">src/everyday-types.ts#L19</a>  <ul><p>[K   in   <a href="#Keys$54">Keys</a>&lt;<a href="#T$68">T</a>&gt;  ]:  <a href="#T$68">T</a>  [<span>K</span>]</p>        </ul></details><details id="Null$69" title="TypeAlias" ><summary><span><a href="#Null$69">#</a></span>  <code><strong>Null</strong></code>    </summary>  <a href="src/everyday-types.ts#L20">src/everyday-types.ts#L20</a>  <ul><p><code>null</code> | undefined | void</p>        </ul></details><details id="ObjectFromList$70" title="TypeAlias" ><summary><span><a href="#ObjectFromList$70">#</a></span>  <code><strong>ObjectFromList</strong></code>    </summary>  <a href="src/everyday-types.ts#L22">src/everyday-types.ts#L22</a>  <ul><p>[K   in   <a href="#T$71">T</a> extends <span>ReadonlyArray</span>&lt;inferred&gt; ? <span>U</span> : never  ]:  <a href="#V$72">V</a></p>        </ul></details><details id="Prefix$73" title="TypeAlias" ><summary><span><a href="#Prefix$73">#</a></span>  <code><strong>Prefix</strong></code>    </summary>  <a href="src/everyday-types.ts#L25">src/everyday-types.ts#L25</a>  <ul><p>template-literal</p>        </ul></details><details id="SansOn$76" title="TypeAlias" ><summary><span><a href="#SansOn$76">#</a></span>  <code><strong>SansOn</strong></code>    </summary>  <a href="src/everyday-types.ts#L26">src/everyday-types.ts#L26</a>  <ul><p><a href="#String.Split$14">String.Split</a>&lt;<a href="#StringOf$82">StringOf</a>&lt;<a href="#T$77">T</a>&gt;, <code>" on"</code>&gt;</p>        </ul></details><details id="StringKeys$78" title="TypeAlias" ><summary><span><a href="#StringKeys$78">#</a></span>  <code><strong>StringKeys</strong></code>    </summary>  <a href="src/everyday-types.ts#L27">src/everyday-types.ts#L27</a>  <ul><p><a href="#StringOf$82">StringOf</a>&lt;keyof     <a href="#T$79">T</a>&gt;</p>        </ul></details><details id="StringLiteral$80" title="TypeAlias" ><summary><span><a href="#StringLiteral$80">#</a></span>  <code><strong>StringLiteral</strong></code>    </summary>  <a href="src/everyday-types.ts#L28">src/everyday-types.ts#L28</a>  <ul><p><a href="#T$81">T</a> extends string ? string extends <a href="#T$81">T</a> ? never : <a href="#T$81">T</a> : never</p>        </ul></details><details id="StringOf$82" title="TypeAlias" ><summary><span><a href="#StringOf$82">#</a></span>  <code><strong>StringOf</strong></code>    </summary>  <a href="src/everyday-types.ts#L29">src/everyday-types.ts#L29</a>  <ul><p><a href="#Narrow$64">Narrow</a>&lt;<a href="#T$83">T</a>, string&gt;</p>        </ul></details><details id="Target$84" title="TypeAlias" ><summary><span><a href="#Target$84">#</a></span>  <code><strong>Target</strong></code>    </summary>  <a href="src/everyday-types.ts#L30">src/everyday-types.ts#L30</a>  <ul><p><span>HTMLElement</span> | <span>SVGElement</span> | <span>Window</span> | <span>Document</span> | <span>ShadowRoot</span></p>        </ul></details><details id="ValueConstructor$111" title="TypeAlias" ><summary><span><a href="#ValueConstructor$111">#</a></span>  <code><strong>ValueConstructor</strong></code>    </summary>  <a href="src/everyday-types.ts#L72">src/everyday-types.ts#L72</a>  <ul><p><span>StringConstructor</span> | <span>NumberConstructor</span> | <span>BooleanConstructor</span></p>        </ul></details><details id="ValuesOf$85" title="TypeAlias" ><summary><span><a href="#ValuesOf$85">#</a></span>  <code><strong>ValuesOf</strong></code>    </summary>  <a href="src/everyday-types.ts#L31">src/everyday-types.ts#L31</a>  <ul><p><a href="#T$86">T</a>  [keyof     <a href="#T$86">T</a>]</p>        </ul></details><details id="_Chunk$20" title="TypeAlias" ><summary><span><a href="#_Chunk$20">#</a></span>  <code><strong>_Chunk</strong></code>    </summary>  <a href="src/everyday-types.ts#L4">src/everyday-types.ts#L4</a>  <ul><p><a href="#R$23">R</a>  [<code>"length"</code>] extends <a href="#N$22">N</a> ? <a href="#R$23">R</a> : <a href="#_Chunk$20">_Chunk</a>&lt;<a href="#T$21">T</a>, <a href="#N$22">N</a>, [  <a href="#T$21">T</a>, rest  ]&gt;</p>        </ul></details></p>

## Credits

- [ts-toolbelt](https://npmjs.org/package/ts-toolbelt) by [Pierre-Antoine Mills](https://github.com/github.com) &ndash; TypeScript's largest utility library

## Contributing

[Fork](https://github.com/stagas/everyday-types/fork) or [edit](https://github.dev/stagas/everyday-types) and submit a PR.

All contributions are welcome!

## License

<a href="LICENSE">MIT</a> &copy; 2022 [stagas](https://github.com/stagas)

---
_Source: https://npm.io/package/everyday-types · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
