TypeScript 2.0定义文件是否向后兼容?

时间:2016-09-30 15:26:00

标签: typescript

我想写一个TypeScript库。我想使用2.0,因为它知道它是最新的,它有一套非常酷的功能。但是,我担心大多数人(可能仍然使用1.8-)无法使用它。

TypeScript 2.0 d.ts定义文件是否向后兼容1.8版?如果没有,是否有一套我可以遵循的最佳实践以确保兼容性?如果做不到的话,我可以做其他事吗?

1 个答案:

答案 0 :(得分:4)

TypeScript 2.0定义文件与1.8兼容,只要您不公开任何特定于2.0的功能(例如readonly或数字文字类型)。

最简单的方法是正常开发,并使用npm安装的1.8编译器副本来验证它仍然能够解析.d.ts文件。在这种情况下,其他一些人已经将一些正则表达式替换到他们的构建链中,从他们的.d.ts文件中删除了一些仅限2.0的功能,如readonly

将来可能会有一个工具将特定于2.0的功能降级到最接近的1.8兼容功能,但还没有人编写它(FWIW它相对简单)。

您可能在.d.ts文件中找到的2.0特定功能列表

  • never类型
  • 明确的nullundefined类型
  • 数字和枚举文字类型(例如interface I { x: 0 }
  • 函数表达式和函数类型中的
  • this类型(例如f(this: something)
  • UMD全球定义(export as namespace g
  • readonly
  • 班级
  • 中的可选属性
  • 私人和受保护的构造函数