{
  type CoffeeCup = {
    shots: number;
    hasMilk: boolean;
  };

  class CoffeeMaker {

		*// 멤버변수*
    static BEANS_GRANS_PER_SHOT = 7; *// class level*
    coffeeBeans: number = 0;         *// instance (object) level*
	
		*// 생성자*
    constructor(coffeeBeans: number) {
      this.coffeeBeans = coffeeBeans;
    }

		*// 멤버함수(메소드)*
    static makeMachine(coffeeBeans: number) { *// class level*
      return new CoffeeMaker(coffeeBeans);
    }
		
		*// 멤버함수(메소드)*
    makeCoffee(shots: number): CoffeeCup {    *// instance (object) level)*
      if (this.coffeeBeans < shots * CoffeeMaker.BEANS_GRANS_PER_SHOT) {
        throw new Error('Not enough coffee beans!');
      }
      this.coffeeBeans -= shots * CoffeeMaker.BEANS_GRANS_PER_SHOT;
      return {
        shots: shots,
        hasMilk: false,
      }
    }
  }
	
	*// instance level 호출 방법*
	const maker = new CoffeeMaker(34);
  console.log(maker);
  const maker2 = new CoffeeMaker(14);
  console.log(maker2);

	*// class level 호출 방법*
  const maker3 = CoffeeMaker.makeMachine(20);
  console.log(maker3);

}