@
fanchangyong 虽然 C++的类型系统在我看来很难用、功能更基础,但这可能是我 C++用的比较少没有驾轻就熟的原因。在我看来类型系统至少有 3 个功能:
1. 引入额外的语义。良好的类型系统本身可以替代一部分的文档。对于第三方的库来说,带类型注解的函数签名和把类型注解给去掉以后相比,哪种情况更容易正确使用?
2. IDE 优化。类型系统能使得你在写函数的时候,IDE 有能力补全函数参数的成员和方法。类型系统使得你还没按下编译 /运行键,IDE 就能告诉你一些事情出错了。类型系统能在你重构的时候,给你更多的掌控。
3. 编译器优化。这也是引入额外语义的附加效果。如果从 0 开始分别为 js 和 ts 写一个编译器 /解释器而不必考虑兼容问题,那么运行效率更快的一定不是 js 。这是显而易见的,因为 ts 能退化成 js 。这也是为什么大部分的静态类型语言比动态类型语言要快。
前两点提高了开发效率,最后一点甚至提高了运行效率。而我们需要为此付出的:
1. 学习额外的类型系统。现代类型系统仍在不断进化,所以你的学习不是一劳永逸的,但是掌握基本类型系统后你就可以很快的上手了。当你想要为代码赋予更精确的类型语义时,再翻翻高级类型系统的文档吧。
2. 为类型注解付出额外的工作量。向 IDE 求助吧,这些注解不会占用你多少额外时间。甚至你能从类型即文档中节省更多的时间。