2016-12-23 3 views
1

Ich frage mich, warum jede Lib, die ich sehe, declare var Syntax statt declare const verwendet. Zum Beispiel lib.d.ts:Warum alle Bibliotheken `declare var` verwenden

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

warum nicht

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

sicher sein, dass es keinen Code, der window mit etwas außer Kraft setzen kann sonst? Ich verwende declare const in meinen ts Dateien und es funktioniert sehr gut.

Antwort

4

Die meisten Bibliotheksdefinitionen wurden geschrieben, bevor const hinzugefügt wurde (TypeScript 1.4). Es kann auch darauf warten, sich mit Autoren der Bibliotheksdefinition zu befassen.

Es ist zu beachten, dass Sie nur const ehrlich in einer Definitionsdatei verwenden sollten - weil Sie verhindern, dass Menschen den Wert in ihrem Code überschreiben.

Genau genommen sollten Sie nur eine const Definition mit einem konstanten Wert in ECMAScript übereinstimmen - sonst definieren Sie Ihre Meinung über den Code und nicht die tatsächliche Implementierung. Wenn jemand eine Variable aus einer Bibliothek überschreiben möchte und die Bibliotheksautoren dies zulassen, wäre die Definitionsdatei nicht korrekt, um dies zu verhindern. auch wenn du nicht denkst, dass es Leuten erlaubt sein sollte, es zu tun.

Wenn der Wert nicht überschrieben werden kann, ist const der richtige Weg, die Unveränderlichkeit in einer Typdefinition zu deklarieren.

+0

Ich kann dem 'TS1.4'-Argument nicht zustimmen, da' DefenitlyTyped' diese Schreibweise auch verwendet, obwohl sie die TS2.1-Syntax in ihren Definitionsdateien verwenden. –

+0

Ja - und wir haben Tausende von zu verwaltenden Definitionsdateien, von denen viele erstellt wurden, als TypeScript v0.8 war. Während wir sie aktualisieren, damit sie sich "weiterbilden" und Änderungen in den Bibliotheken, die sie repräsentieren, widerspiegeln, ist es ein Mammutjob, sie neu zu schreiben, um jede Syntaxänderung zu berücksichtigen. – Fenton

Verwandte Themen