Fun blog post on implementing a small programming language, including a tiny and readable type checker! https://blog.mgechev.com/2017/08/05/typed-lambda-calculus-create-type-checker-transpiler-compiler-javascript/