sindresorhus/is · error · TypeError
Expected value which is `non-empty set`, received value of t
Error message
Expected value which is `non-empty set`, received value of type `${is(value)}`. What it means
Thrown by `assertNonEmptySet()` (source/index.ts:1759) when the value is not a `Set` instance with `size > 0`. An empty Set, an array, or a WeakSet all fail; the TypeError message includes the detected type of what was actually received.
Source
Thrown at source/index.ts:1761
throw new TypeError(message ?? typeErrorMessage('non-empty array', value));
}
}
export function assertNonEmptyMap<Key = unknown, Value = unknown>(value: unknown, message?: string): asserts value is Map<Key, Value> {
if (!isNonEmptyMap(value)) {
throw new TypeError(message ?? typeErrorMessage('non-empty map', value));
}
}
export function assertNonEmptyObject<Key extends keyof any = string, Value = unknown>(value: unknown, message?: string): asserts value is Record<Key, Value> {
if (!isNonEmptyObject(value)) {
throw new TypeError(message ?? typeErrorMessage('non-empty object', value));
}
}
export function assertNonEmptySet<T = unknown>(value: unknown, message?: string): asserts value is Set<T> {
if (!isNonEmptySet(value)) {
throw new TypeError(message ?? typeErrorMessage('non-empty set', value));
}
}
export function assertNonEmptyString(value: unknown, message?: string): asserts value is string {
if (!isNonEmptyString(value)) {
throw new TypeError(message ?? typeErrorMessage('non-empty string', value));
}
}
export function assertNonEmptyStringAndNotWhitespace(value: unknown, message?: string): asserts value is string {
if (!isNonEmptyStringAndNotWhitespace(value)) {
throw new TypeError(message ?? typeErrorMessage('non-empty string and not whitespace', value));
}
}
export function assertNonNegativeInteger(value: unknown, message?: string): asserts value is number {
if (!isNonNegativeInteger(value)) {
throw new TypeError(message ?? typeErrorMessage('non-negative integer', value));View on GitHub ↗ (pinned to 7821031c66)
Solutions
- Convert arrays with `new Set(array)` before asserting.
- If empty is a valid state, use `assert.set(value)` or `is.nonEmptySet(value)` conditionally.
- Trace why the Set is empty — check the code path that was supposed to `.add()` entries.
Example fix
// before assert.nonEmptySet(allowedIds); // allowedIds is string[] // after const allowedIdSet = new Set(allowedIds); assert.nonEmptySet(allowedIdSet);
Defensive patterns
Strategy: validation
Validate before calling
if (value instanceof Set && value.size > 0) {
assert.nonEmptySet(value);
} Type guard
function isNonEmptySet<T>(v: unknown): v is Set<T> {
return v instanceof Set && v.size > 0;
} Try / catch
try {
assert.nonEmptySet(tags);
} catch (error) {
if (error instanceof TypeError) {
// set empty or not a Set — populate it or handle the empty case explicitly
}
throw error;
} Prevention
- Check set.size > 0 before asserting, since new Set([]) and deduplication can silently yield empty sets
- Use is.nonEmptySet(value) when an empty set is a valid state you should branch on
- Remember arrays are not Sets — convert with new Set(array) first if needed
When it happens
Trigger: Calling `assert.nonEmptySet(value)` with `new Set()` (empty), an array `[1, 2]`, a WeakSet, or a deserialized value (JSON has no Set representation).
Common situations: Passing an array where a Set is required; Sets emptied by a `.clear()` or never populated due to a logic branch being skipped; data round-tripped through JSON losing its Set-ness.
Related errors
- Expected value which is `non-empty array`, received value of
- Expected value which is `non-empty map`, received value of t
- Expected value which is `non-empty object`, received value o
- Expected value which is `non-empty string`, received value o
- Expected value which is `null`, received value of type `${is
AI-assisted analysis of sindresorhus/is@7821031c66 (2026-07-31).
Data as JSON: /data/errors/3d9ee01bdbad3cd3.json.
Report an issue: GitHub ↗.