我想知道为什么我看到的每个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
,但效果非常好。
答案 0 :(得分:4)
大多数库定义是在添加const
之前编写的(TypeScript 1.4)。它也可能正在等待图书馆定义作者。
值得记住的是,您只应在定义文件中诚实地使用const
- 因为您阻止人们覆盖其代码中的值。
严格地说,您应该只在ECMAScript中将const
定义与常量值匹配 - 否则您将定义您对代码的看法而不是实际实现。如果有人想要覆盖库中的变量,并且库作者允许它 - 那么定义文件就会出错以防止它;即使你不认为应该允许人们这样做。
如果无法覆盖该值,const
是在类型定义中声明不变性的正确方法。