Was having this debate during a submission today. Do y'all have opinions?
My reasoning was to apply the same rationale as runtime vs run-time vs run time: type check when type is modifying the verb check, type-check when acting as a phrase modifying something else such as type-checking algorithm, and never typecheck.