Skip to main content
Module

x/unknownutil/is.ts>isPickOf

🦕 A lightweight utility pack for handling unknown type
Go to Latest
function isPickOf
import { isPickOf } from "https://deno.land/x/unknownutil@v3.18.0/is.ts";

Return a type predicate function that returns true if the type of x is Pick<ObjectOf<T>, K>.

To enhance performance, users are advised to cache the return value of this function and mitigate the creation cost.

import { is } from "@core/unknownutil";

const isMyType = is.PickOf(is.ObjectOf({
  a: is.Number,
  b: is.String,
  c: is.OptionalOf(is.Boolean),
}), ["a", "c"]);
const a: unknown = { a: 0, b: "a", other: "other" };
if (isMyType(a)) {
  // The "b" and "other" key in `a` is ignored.
  // 'a' is narrowed to { a: number; c?: boolean | undefined }
  const _: { a: number; c?: boolean | undefined } = a;
}

Type Parameters

T extends Record<PropertyKey, unknown>
K extends keyof T

Parameters

pred: Predicate<T> & WithMetadata<IsObjectOfMetadata>
keys: K[]

Returns

Predicate<FlatType<Pick<T, K>>> & WithMetadata<IsObjectOfMetadata>