警告を受け取る関数です。警告を渡すのをやめる場合は null です。
以前に設定されたハンドラーです。なければ null です。
const seen: string[] = [];
const previous = setWarningHandler((message, source) => { seen.push(`${source}: ${message}`); });
optim([1, 1], (p) => (p[0] - 2) ** 2 + (p[1] - 3) ** 2, { lower: [0, 0] }).warnings;
// ["bounds can only be used with method L-BFGS-B (or Brent)"]
setWarningHandler(previous);
seen; // ["optim: bounds can only be used with method L-BFGS-B (or Brent)"]
R の警告を受け取る関数を設定し、置き換えられた関数を返します (なければ
null)。R の関数ではありません。R が警告を表示する役割を果たし、また例外を投げることでoptions(warn = 2)の役割も果たします。ハンドラーの設定に関係なく、すべての検定、モデル、当てはめは、R の警告をその結果の
warningsに返します。ハンドラーを設定すると、そのような関数 (およびonWarningのないpivotLonger) を呼ぶたびに、結果を計算した後で、警告もハンドラーに渡されます。各警告は、異なるものを 1 回ずつ、順に、呼ばれた関数の名前とともに渡されます (ほかの関数を呼ぶ関数、たとえばpairwiseWilcoxTestは、警告を自身の名前の下で 1 回だけ渡します)。当てはめの警告は、当てはめるとき (lm、glm、aov、lmerなど) に 1 回渡されます。当てはめや表を受け取る関数 (anova、aovSummary、Anova、glmSummary、etaSquared、lmerSummaryなど) は、警告を結果のwarningsに残しますが、自分が追加した警告だけを渡します。ハンドラーが投げたエラーは、呼び出し元に伝わります。既定ではハンドラーはなく、何も表示されません。R と同じように警告を表示するには、
(message, source) => console.warn(source + ": " + message)を設定します。例外を投げるハンドラー ((message) => { throw new Error(message); }) は、R のoptions(warn = 2)と同じく、各警告をエラーに変えます。ハンドラーは
globalThisに保持されるため、ページに読み込まれたライブラリのすべてのコピーで、1 つの設定を共有します。