Skip to content

Instantly share code, notes, and snippets.

@theScottyJam
Created October 25, 2021 13:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theScottyJam/e903749f94bb99081d48526702bf7784 to your computer and use it in GitHub Desktop.
Save theScottyJam/e903749f94bb99081d48526702bf7784 to your computer and use it in GitHub Desktop.
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