JS Built-ins
TypeScriptintermediate

Type Guard β€” isOneOf

πŸ“– Usage Example
function isOneOf<T extends readonly unknown[]>(vals: T, x: unknown): x is T[number] {
  return (vals as readonly unknown[]).includes(x)
}
isOneOf(['red', 'blue'] as const, 'red')   // β†’ true

isOneOf creates a type guard that narrows to a literal union from a fixed list of values.

Type Guards: isOneOf

Challenge: Implement isOneOf<T extends readonly unknown[]>(x: unknown, values: T): x is T[number] β€” checking if x is one of a fixed set of literal values.

isOneOf('red', ['red', 'green', 'blue'] as const)  // β†’ true
isOneOf('pink', ['red', 'green', 'blue'] as const) // β†’ false
πŸ’‘ Hints (1)
  • β€’ Array.includes uses strict equality β€” perfect for value checking.