【发布时间】:2014-06-21 06:37:05
【问题描述】:
使用以下代码:
function foo() : void {
// do something
}
var f = foo(); // why no error here?
即使 foo 函数已声明为不返回任何内容,这也不会产生编译器警告/错误。
我想防止的另一种情况是:
if (foo()) {
}
我正在构建一个供其他开发人员使用的 API,TypeScript 可以很好地促进类型安全,并且通常有助于捕获常见的 JavaScript 错误,否则这些错误只会在测试时而不是在编译时被捕获。虽然这种情况显然没有处理,但它会在 C# 等其他语言中处理。开发人员通常是客户,可能没有太多经验,所以我想让平台尽可能健壮,并在部署代码之前发现尽可能多的问题。
是否有一些合理的方法来构造代码以防止其他代码尝试使用没有返回值的函数的undefined 结果?如果foo 不返回任何内容,我宁愿代码只能将其称为foo();,而不是在执行赋值(或类似执行)时无意中期望一个有效的返回值。
其他编程语言通常会在编译时捕获这种类型的代码结构(并显示警告/错误)。
【问题讨论】:
-
您是如何发现这一点的?这是您发现的真实代码的简化示例吗?在运行时意外损坏了,而您原本预计它会被 TypeScript 编译器捕获?
-
这是真实事物的简化示例。
标签: typescript