Chamar uma variável global dentro do módulo


248

Eu tenho um arquivo datilografado chamado Projects.tsque desejo referenciar uma variável global declarada em um plug-in de auto-inicialização chamado bootbox.js.

Eu quero acessar uma variável chamada bootboxde dentro de uma classe TypeScript.

É possível?


3
Existe uma definição DefinitelyTyped para bootbox agora nuget.org/packages/bootbox.TypeScript.DefinitelyTyped
ThisGuy

Respostas:


404

Você precisa informar ao compilador que foi declarado:

declare var bootbox: any;

Se você tiver informações de tipo melhores, poderá adicioná-las também, no lugar de any.


5
Pode pular ': any' pouco, na verdade.
precisa saber é o seguinte

37
Isso não seria um bom exemplo para um formato de perguntas e respostas, embora eu esteja sugerindo que eles adicionem informações de tipos específicos e a resposta mostra como e onde eles as colocariam.
Fenton

14
Para nós, novatos datilografados, onde colocamos essa declareafirmação?
Bob Horn

Esta é uma boa solução para funções globais também? Colocando algo como declare var myFunction: any;?
jonathanrz

1
@jonathanrz sim, pode ser uma assinatura específica também se você quiser ir tão longe, por exemplodeclare var myFunction: (input: string) => void;
Fenton

47

Para aqueles que ainda não sabiam, você teria que colocar a declaredeclaração fora da sua, classassim:

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;
}

Na TypeScriptpalavra-chave declarar, é usada onde você deseja definir uma variável que pode não ter sido originada de um TypeScriptarquivo.

É como você diz ao compilador que, eu sei que essa variável terá um valor em tempo de execução, portanto, não gere um erro de compilação.


15

Se é algo que você faz referência, mas nunca sofre mutação, use const:

declare const bootbox;

12

As soluções Sohnee são mais limpas, mas você também pode tentar

window["bootbox"]

3

Se você deseja ter uma referência a essa variável em todo o projeto, crie um d.tsarquivo em algum lugar , por exemplo globals.d.ts. Preencha com suas declarações de variáveis ​​globais, por exemplo:

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

Agora você pode referenciá-lo em qualquer lugar do projeto, assim:

const bootbox = BootBox;

Aqui está um exemplo .


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.