类型检查是强类型语言(例如 Scala 或 Java)的编译时功能,允许验证签名和类型之间的关系。此类检查将阻止您在需要 Meat 类型的参数时传递 Banana 类型的参数,或将 String 分配给 Int 类型的变量。通常,在 Ruby 或 Javascript 等动态语言中,这是不可能的
您正在寻找的不是类型检查器。您不想验证程序在语法上是否正确,而是验证其行为是否正确,而解决方案称为自动化测试。
你完全能够编写语法正确但行为错误的代码:
public boolean isTrue(boolean value){
return !value;
}
Run Code Online (Sandbox Code Playgroud)
如果您反过来想,您将如何在编译时测试需要填充一些数据的模板的正确性?
<!-- importing a snippet depending on the value of a variable -->
<import src="${snippetName}.xml"/>
Run Code Online (Sandbox Code Playgroud)
你不能,因为编译时的所有变量绝对没有值。这就是为什么自动化测试很重要,并且为应用程序编写测试用例不能被编译时检查取代。