语义版本控制和向后兼容性

时间:2018-10-27 16:10:23

标签: typescript semantic-versioning

我有一个函数,该函数是返回某些对象的公共API的一部分。如果没有严格的检查选项,它也可以返回undefined。现在,我想在项目中打开严格检查,并且由于此函数实际上具有可以返回undefined打字稿的流程,因此现在需要将|undefined添加到返回类型。这是否构成补丁版本的更新,次要或主要版本?

问题是,如果某些应用程序在启用严格检查的情况下使用了库,则新版本可能不再编译。因此,就此而言,它不再向后兼容。另一方面,在某些情况下,当前版本会返回undefined,因此新版本实际上不会带来任何API更改。

所以我看到我可以增加所有三个版本:

  1. 主要-因为使用此版本,客户端代码不再编译
  2. 次要–因为这是对API的明显更改,但向后兼容
  3. 修补程序-因为实际上行为没有改变

这是各个版本之间的简化代码更改:

旧版本(禁用严格检查):

function foo(val: number): Object {
    if (val < 0) {
        return;
    }
    return { val };
}

新版本(已启用严格检查):

function foo(val: number): Object|undefined {
    if (val < 0) {
        return;
    }
    return { val };
}

0 个答案:

没有答案