ts-data-forge
    Preparing search index...

    Variable hasKeyConst

    hasKey: <const R extends UnknownRecord, const K extends PropertyKey>(
        obj: R,
        key: K,
    ) => obj is HasKeyReturnType<R, K>

    Type guard function that checks if an object has a specific key as its own property.

    This function uses Object.hasOwn() to check if the given object has the specified key as its own property (not inherited). It acts as a type guard that narrows the type of the object to guarantee the key exists, enabling type-safe property access.

    Type Narrowing Behavior:

    • When the guard returns true, TypeScript narrows the object type to include the checked key
    • For union types, only union members that contain the key are preserved
    • The key's value type is preserved from the original object type when possible

    Type Declaration

      • <const R extends UnknownRecord, const K extends PropertyKey>(
            obj: R,
            key: K,
        ): obj is HasKeyReturnType<R, K>
      • Type Parameters

        • const R extends UnknownRecord

          The type of the input object, must extend UnknownRecord

        • const K extends PropertyKey

          The type of the key to check for, must extend PropertyKey (string | number | symbol)

        Parameters

        • obj: R

          The object to check for the presence of the key

        • key: K

          The key to check for in the object

        Returns obj is HasKeyReturnType<R, K>

        true if the object has the specified key as its own property, false otherwise. When true, TypeScript narrows the object type to guarantee the key exists.

    const maybeUser: Readonly<{ id?: number; name?: string }> = {
    id: 42,
    } as const;

    if (hasKey(maybeUser, 'id')) {
    // `maybeUser` is now known to have an `id` property.
    assert.isTrue(maybeUser.id === 42);
    } else {
    assert.fail();
    }

    keyIsIn - Similar function that narrows the key type instead of the object type