モジュール内でグローバル変数を呼び出す


248

Projects.tsという名前のブートスクリプトプラグインで宣言されたグローバル変数を参照するというtypescriptファイルがありますbootbox.js。

bootboxTypeScriptクラス内から呼び出された変数にアクセスしたい。

出来ますか?


3
ブートボックスのDefinitelyTyped定義がありますnuget.org/packages/bootbox.TypeScript.DefinitelyTyped
— ThisGuy

回答:


404

宣言したことをコンパイラに伝える必要があります。

declare var bootbox: any;

タイプ情報が適切であれば、の代わりにそれを追加することもできますany。


5
実際には「:任意」のビットをスキップできます。
— Oleg Mihailik

37
これはQ&A形式の良い例にはなりませんが、特定の型情報を追加することをお勧めします。答えは、その形式と場所を示しています。
— フェントン

14
私たちのタイプスクリプト初心者にとって、そのdeclareステートメントはどこに置くのでしょうか?
— Bob Horn

これはグローバル関数にとっても良い解決策ですか?のようなものを置くdeclare var myFunction: any;?
— jonathanrz 2018年

1
@jonathanrzはい、たとえば、そこまで行きたければ、特定の署名でも構いませんdeclare var myFunction: (input: string) => void;
— Fenton

47

まだ知らない人のために、あなたはこのようにdeclareあなたの外に陳述をしなければならないでしょうclass:

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

ではTypeScript、あなたが由来していない可能性があり、変数を定義する場所を宣言キーワード使用されているTypeScriptファイルを。

あなたがコンパイラーに言うように、この変数は実行時に値を持つことを知っているので、コンパイルエラーをスローしないでください。


15

それがあなたが参照するものであるが変化しないものである場合は、次を使用してconstください:

declare const bootbox;

12

ソニーのソリューションはよりクリーンですが、試すこともできます

window["bootbox"]

3

プロジェクト全体でこの変数への参照が必要な場合は、どこかにd.tsファイル(例:)を作成しますglobals.d.ts。あなたのグローバル変数宣言をそれに記入してください、例えば:

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

これで、プロジェクト全体のどこでも同じように参照できます。

const bootbox = BootBox;

ここに例があります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.