Llamar a una variable global dentro del módulo

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.

Fenton
fuente
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.

Himanshu Arora
fuente
15

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

declare const bootbox;
Josh Wulf
fuente
12

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

window["bootbox"]
Prusdrum
fuente
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 .

Krzysztof Grzybek
fuente
-4

Descargue los tipings de bootbox

Luego agregue una referencia dentro de su archivo .ts.

ser savv
fuente
2
Por favor, no solo publique alguna herramienta o biblioteca como respuesta. Al menos demuestre cómo resuelve el problema en la respuesta misma.
Filnor