JavaScriptは型が無い。とは云え、全く無視するのは辛いので。マメにJSDocなコメントを入れている。
VisualStudioCodeでは関数や変数の名前をクリックして2回(Ctl+Alt+D)すると、テンプレが書き込まれるので簡単だ。
しかし、コード中に型チェックすると typeof を羅列するより switch case で書きたい時もある。
そんな時はObject.prototype.toString()が、
[Object ${ObjectTypeName}]の様な文字列を返してくれるので、 switch case 風に処理できる。
/**
* オブジェクトの型名を調べる
*
* @param {Any} obj オブジェクト
* @return {string} 型名
*/
const getTypeName= (obj) => {
if (typeof (obj) === "undefined") {
return "undefined";
}
var toString = Object.prototype.toString;
// [object typeName] のハズなので、typeName部分を抽出してみる
let typeName = toString.call(obj).match(/^\[\w+\s+(\w+)\]$/);
return typeName[1];
}
各オブジェクトのtoStringメソッドは、一番OverWriteしまくっているメソッドなので、
ココでは確実な動作を狙って、Object.prototype. toString をCall呼び出しで参照してみた。
でも名前がgetTypeNameなのがイマイチなんでObjectTypeNameにリファクタリングしたら、
他のファイルでUndefinedになってた。
JavScriptだから仕方が無いけど。
置換機能で書き換えようとしたら・・・
(サッパリ
検索すらしない。
ググっても、それっぽい記事は無い。
試しに「検索エディタ」を開いてみた。
するとちゃんと検索しだした。
MSCodeを再起動しても、結果は良好。
つまり、裏側でこっそり設定ファイルが出来た様だ。
※この手の自動設定の不具合は、インストーラのテスト同様に見つけにくいものだ。
昔の映画で「xx製は叩けば治る!」というセリフがあったけど、MSCodeも同じらしい。
初回ダメなら「新規xx」とかをぶったたけば、初期設定ができるかも。
しかし、今後はどうなるか予断を許さない。(と思う。