Skip to content

Instantly share code, notes, and snippets.

@nwellis
Created April 18, 2025 12:03
Show Gist options
  • Select an option

  • Save nwellis/a401a6915d1518c5142cfb74632bc9d9 to your computer and use it in GitHub Desktop.

Select an option

Save nwellis/a401a6915d1518c5142cfb74632bc9d9 to your computer and use it in GitHub Desktop.

Revisions

  1. nwellis created this gist Apr 18, 2025.
    13 changes: 13 additions & 0 deletions TypeUtil.ts
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,13 @@
    export function withType<TElement extends { __type: string }, TType extends TElement["__type"]>(
    elements: TElement[],
    type: TType
    ): Extract<TElement, { __type: TType }>[] {
    return elements?.filter(element => element.__type === type) as Extract<TElement, { __type: TType }>[]
    }

    export function withoutType<TElement extends { __type: string }, TType extends TElement["__type"]>(
    elements: TElement[],
    type: TType
    ): Exclude<TElement, { __type: TType }>[] {
    return elements?.filter(element => element.__type !== type) as Exclude<TElement, { __type: TType }>[]
    }