Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Article: Composition Alone Can't Replace Inheritance - runtime hierarchy check
const monsterSentinel = {}
export const isMonster = obj => obj.typeSentinel === monsterSentinel
export class Slime {
typeSentinel = monsterSentinel
...
}
export class Skeleton {
typeSentinel = monsterSentinel
...
}
isMonster(new Slime()) // true
isMonster(new Skeleton()) // true
isMonster({ x: 2 }) // false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment