Open2
d.tsファイルのアンビエント宣言 (namespace vs var)
d.ts
ファイルでグローバルオブジェクトをアンビエント宣言したい。
よく見るのは namespace
だけど、var
で書いてるのも見かける。
どっちがいいの??
namespace
のほうが同一名前空間のマージができて良いような気もしつつ、決め手に欠けり。
namespace
の場合
export {};
global {
namespace aaa {
function bbb(input: string): Promise<string>;
namespace bbb {
function ccc(input: number): number;
}
}
}
var
の場合
export {};
global {
var aaa: {
bbb: {
(): (input: string) => Promise<string>;
ccc: (input: number) => number;
};
};
}
let/const ではなくvarを使っているのはお作法。
スクリプトファイルと同様、 declare global 内で let や const を使っても意図通りにはなりません。