モジュールを使用するときにインポートする必要なく、どこでも使用できるグローバル関数を定義したいと思います。TypeScriptでグローバル関数を定義する方法は?
この関数は、C#で使用可能なセーフナビゲーション演算子(?)を置き換えることを目的としています。読みやすくするために、関数の前にモジュール名をつけたくありません。
Global.d.ts:
declare function s<T>(someObject: T | null | undefined, defaultValue?: T | null | undefined) : T;
Global.tsx:
///<reference path="Global.d.ts" />
export function s<T>(object: T | null | undefined, defaultValue: T | null = null = {} as T) : T {
if (typeof object === 'undefined' || object === null)
return defaultValue as T;
else
return object;
}
App.tsx(ルートtypescriptファイル):
import 'Global';
他TSXファイル(メソッドの使用):
s(s(nullableVar).member).member; //Runtime error
これはうまくコンパイルされますが、ブラウザで 's is not a function
'がスローされます。
は、私はプロパティ 's' は型「Window''上に存在しない '得ます。 2番目の解決策では、 'グローバルスコープの拡張は、外部モジュールまたは周囲モジュール宣言に直接入れ子にすることしかできません。 ' – sixtstorm1
私はdtsファイルの関数を 'declare global {...}'の中にラップしようとしましたが、関数を使用するとコンパイル時にエラー ''名前を見つけることができません '私は欲しくない。 – sixtstorm1
私は自分の答えを編集しました。うまくいけば助けてくれます。 – CaseyWebb