TypeScriptからMP4Box.jsのLogオブジェクトを扱う
TypeScriptからMP4Box.jsのMP4Box.js/Logオブジェクトを扱います
やはり型定義が必要そうです
自分の場合、node_modulesに、
node_modules/@types/mp4box/index.d.tsというファイルを置いていましたので、ここに定義しました
code: index.d.ts
interface LogObject {
setLogLevel: (level: Function) => void;
debug: Function;
}
export var Log: LogObject;
疑問点
なぜlevelはnumberではなく関数なのか?
個人的に謎ポイント。
Logの実装では、log_levelという数値が存在しており、ログが送出するかどうかは、このlog_levelを使って判定されるのに・・・
実際には、関数を渡す必要があります。
具体的には、Log.info()やLog.warn()といったLogオブジェクトのメソッドです
今回はレベルをdebugに設定できればよかったので、debugメソッドを定義することでsetLogLevelを使えるようにしました
使うときはこんな感じです
code: log.ts
import MP4Box from "mp4box";
MP4Box.Log.setLogLevel(MP4Box.Log.debug);