Llamar a una variable global dentro del módulo


248

Tengo un archivo de mecanografía llamado Projects.tsque quiero hacer referencia a una variable global declarada en un complemento de arranque llamado bootbox.js.

Quiero acceder a una variable llamada bootboxdesde dentro de una clase TypeScript.

¿Es posible?


3
Hay una definición DefinitelyTyped para bootbox ahora nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
— ThisGuy

Respuestas:


404

Debe decirle al compilador que se ha declarado:

declare var bootbox: any;

Si tiene mejor información de tipo, también puede agregarla, en lugar de any.


55
Puede omitir ': cualquier' bit en realidad.
— Oleg Mihailik

37
Sin embargo, eso no sería un buen ejemplo para un formato de preguntas y respuestas, ya que sugiero que agreguen información de tipo específica y la respuesta muestra cómo y dónde lo colocarían.
— Fenton

14
Para nosotros los novatos mecanografiados, ¿dónde ponemos esa declaredeclaración?
— Bob Horn el

¿Es esta una buena solución para funciones globales también? Colocando algo como declare var myFunction: any;?
— jonathanrz

1
@jonathanrz sí, también puede ser una firma específica si quieres llegar tan lejos, por ejemplodeclare var myFunction: (input: string) => void;
— Fenton el

47

Para aquellos que no lo sabían, tendrías que poner la declaredeclaración fuera de tu classjusto así:

declare var Chart: any;

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss']
})

export class MyComponent {
    //you can use Chart now and compiler wont complain
    private color = Chart.color;
}

En TypeScriptla palabra clave declarar se usa donde desea definir una variable que puede no haberse originado de un TypeScriptarchivo.

Es como decirle al compilador que, sé que esta variable tendrá un valor en tiempo de ejecución, así que no arroje un error de compilación.


15

Si es algo a lo que hace referencia pero nunca muta, use const:

declare const bootbox;

12

Las soluciones de Sohnee son más limpias, pero también puedes probar

window["bootbox"]

3

Si desea tener una referencia a esta variable en todo el proyecto, cree un d.tsarchivo en algún lugar , por ejemplo globals.d.ts. Rellene con sus declaraciones de variables globales, por ejemplo:

declare const BootBox: 'boot' | 'box';

Ahora puede hacer referencia a él en cualquier parte del proyecto, así:

const bootbox = BootBox;

Aquí hay un ejemplo .


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.