typescript - Cum să exporți o valoare externă declarată ca export denumit?
Exportarea unei valori declarate (adică o variabilă globală presupus definită extern) ca export implicit funcționează conform așteptărilor:
// TypeScript
declare const foo: number
export default foo
// ES2015
export default foo;
Dar încercarea de a o exporta ca un export numit nu funcționează:
// TypeScript
export declare const foo: number
// ES2015
export {};
Există vreo modalitate să facem să funcționeze asta?
Răspuns #1
Presupun că cauți
declare global {
var foo: number;
}
export const foo = globalThis.foo;
Acesta declară că există o variabilă globală numită foo (creată de alt cod), apoi creează o const locală numită foo care este inițializată cu valoarea globală și o exportă sub numele foo.
Dacă utilizarea globalThis nu funcționează pentru tine (de exemplu, deoarece globalul este de fapt declarat ca un const, nu ca o proprietate a obiectului global așa cum ar fi un var), atunci trebuie să introduci un identificator local cu un nume diferit pentru a evita coliziunile și să îl exporți:
declare global {
const foo: number;
}
const _foo = foo;
export { _foo as foo }
Aceasta declară că există o constantă globală numită foo (creată de un alt script), apoi creează o constantă locală numită _foo care este inițializată cu valoarea globală și o exportă sub numele foo.
Acesta este cam exact ceea ce face și exportul tău implicit - export default foo; este echivalent cu
const _default = foo;
export { _default as default }
(except _default este o legătură ascunsă care nu poate fi accesată din cod).
Nu este posibil în modulele ECMAScript să exportați o variabilă care nu este declarată de modulul curent sau nu este exportată de un alt modul (pe care ați putea să-l exportați { … } from '…';). Fiecare legătură exportată trebuie să fie declarată într-un modul.
