Combining Static and Runtime Type Checking for Better Dev Productivity