Const FunctionOnly considers own enumerable string keys (equivalent to Object.keys()).
Symbol keys and non-enumerable keys are not checked.
expect({ foo: 1, bar: 2 }, 'to have keys satisfying', z.string()); // passes
expect({ foo: 1, bar: 2 }, 'to have props satisfying', /^[a-z]+$/); // alias
expect({ foo: 1, bar: 2 }, 'to have fields satisfying', /^[a-z]+$/); // alias
expect({ FOO: 1 }, 'to have keys satisfying', /^[a-z]+$/); // fails
Asserts that ALL own enumerable string keys of a non-collection object individually satisfy the expected shape.
Uses partial/satisfy semantics — every key must match. Empty objects pass vacuously.