TypeScript

by Daniel Cheung

HTML

<div id="app"></div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
  text-align: center;
}

TypeScript

interface Node {
	toString: () => string
}

class Parenthesis implements Node {
  left?: Node
  
  constructor(left: Node) {
  	this.left = left
  }
  
  toString() {
    return `(${this.left.toString()})`
  }
}

abstract class BinaryOperator implements Node {
	left?: Node
  right?: Node
  
  constructor(left: Node, right: Node) {
    this.left = left
    this.right = right
  }
  
  abstract getOperand(): string
  
  toString() {
    
  }
}

class Number implements Node {
  value: number
  
 	constructor(value: number) {
  	this.value = value
  }
  
  toString() {
  	return this.value
  }
}


const n = 4
const numbers = Array.from(Array(n).keys()).map(i => new Number(4))