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

Typescript 为什么所有库都使用“declare var”`,typescript,Typescript,我想知道为什么我看到的每个库都使用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 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;

要确保没有代码可以用其他内容覆盖
窗口
?我正在我的
ts
文件中使用
declare const
,它工作得很好。

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

值得记住的是,您应该只在定义文件中诚实地使用
const
,因为这样可以防止人们覆盖代码中的值

严格来说,您应该只将
const
定义与ECMAScript中的常量值相匹配,否则您定义的是您对代码的看法,而不是实际的实现。如果有人想重写库中的变量,并且库作者允许,那么阻止它的定义文件是不正确的;即使你认为人们不应该被允许这样做


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

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

值得记住的是,您应该只在定义文件中诚实地使用
const
,因为这样可以防止人们覆盖代码中的值

严格来说,您应该只将
const
定义与ECMAScript中的常量值相匹配,否则您定义的是您对代码的看法,而不是实际的实现。如果有人想重写库中的变量,并且库作者允许,那么阻止它的定义文件是不正确的;即使你认为人们不应该被允许这样做


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

不能同意
TS1.4
参数,因为
DefensitilyTyped
也在使用这种表示法,而不管他们在定义文件中使用的是TS2.1语法。是的-我们有1000个定义文件要管理,其中许多是在TypeScript为v0.8时创建的。当我们更新它们以保持它们的“构建”并反映它们所代表的图书馆的变化时,重写它们以考虑到每一次语法更改是一项艰巨的工作。我不能同意
TS1.4
参数,因为
DefensityTyped
也在使用这种表示法,无论它们在其定义文件中使用的是TS2.1语法。是的,我们有1000个定义文件要管理,其中许多是在TypeScript为v0.8时创建的。当我们更新它们以保持它们的“构建”并反映它们所代表的库中的变化时,重写它们以考虑每一个语法变化是一项艰巨的工作。