我有一个函数,该函数是返回某些对象的公共API的一部分。如果没有严格的检查选项,它也可以返回undefined
。现在,我想在项目中打开严格检查,并且由于此函数实际上具有可以返回undefined
打字稿的流程,因此现在需要将|undefined
添加到返回类型。这是否构成补丁版本的更新,次要或主要版本?
问题是,如果某些应用程序在启用严格检查的情况下使用了库,则新版本可能不再编译。因此,就此而言,它不再向后兼容。另一方面,在某些情况下,当前版本会返回undefined
,因此新版本实际上不会带来任何API更改。
所以我看到我可以增加所有三个版本:
这是各个版本之间的简化代码更改:
旧版本(禁用严格检查):
function foo(val: number): Object {
if (val < 0) {
return;
}
return { val };
}
新版本(已启用严格检查):
function foo(val: number): Object|undefined {
if (val < 0) {
return;
}
return { val };
}