类型重构