使用构建类型系统的方式，感觉不好