为什么所有库都使用`declare var`

时间:2016-12-23 14:36:14

标签: typescript

我想知道为什么我看到的每个lib都使用declare var语法而不是declare const。例如lib.d.ts:

declare var statusbar: BarProp;
declare var styleMedia: StyleMedia;
declare var toolbar: BarProp;
declare var top: Window;
declare var window: Window;

为什么不

declare const statusbar: BarProp;
declare const styleMedia: StyleMedia;
declare const toolbar: BarProp;
declare const top: Window;
declare const window: Window;

确保没有可以用其他内容覆盖window的代码?我在我的declare const文件中使用了ts,但效果非常好。

1 个答案:

答案 0 :(得分:4)

大多数库定义是在添加const之前编写的(TypeScript 1.4)。它也可能正在等待图书馆定义作者。

值得记住的是,您只应在定义文件中诚实地使用const - 因为您阻止人们覆盖其代码中的值。

严格地说,您应该只在ECMAScript中将const定义与常量值匹配 - 否则您将定义您对代码的看法而不是实际实现。如果有人想要覆盖库中的变量,并且库作者允许它 - 那么定义文件就会出错以防止它;即使你不认为应该允许人们这样做。

如果无法覆盖该值,const是在类型定义中声明不变性的正确方法。