← Back to Snippets
TypeScriptApr 2026
Generic runtime type guard
Narrow an unknown value to a typed interface at runtime — useful after fetch or JSON.parse.
snippet
function isType<T>(value: unknown, keys: (keyof T)[]): value is T {
return (
typeof value === 'object' &&
value !== null &&
keys.every(key => key in value)
)
}
// Your interface
interface User {
id: number
name: string
email: string
}
// Usage after fetch
const data: unknown = await fetchUser()
if (isType<User>(data, ['id', 'name', 'email'])) {
console.log(data.name) // TypeScript knows it's a User ✓
}Type GuardsGenericsRuntime Safety