Guten Morgen,
in Javascript gibt es ja dieses bekannte Pattern Object.prototype.toString.call(o).slice(8, -1)
, mit dem man an den Typ einer Variable kommt. Das kann man dann noch mit einem typeof
-Check paaren, um zusätzlich vom Typ auch noch Primitives unterscheiden zu können. Schließlich kommt in etwa sowas raus:
let type = function(o) {
if (o === null)
return 'null';
if (Number.isNaN(o))
return 'NaN';
let t = typeof o;
if (t !== 'object')
return t;
return Object.prototype.toString.call(o).slice(8, -1);
};
Diese Funktion erkennt im Grunde genommen alles, was man ihr zum fressen gibt:
new Number(10) // "Number"
10 // "number"
NaN // "NaN"
[] // "Array"
{} // "Object"
/x/ // "RegExp"
new Date() // "Date"
function(){} // "function"
Symbol() // "symbol"
undefined // "undefined"
null // "null"
Mich würde nun interessieren, ob etwas gegen einen breiten Einsatz eines solchen Typ-Checks spricht. Wenn ich an einer Library oder einem API schreibe ist es nicht wegzudenken, den Parameter-Input-Typ zu kennen - bspw. wenn man unterschiedliche Signaturen für eine Funktion zur Verfügung stellen möchte oder eine aussagekräftige Exception werfen. Oder wie regelt ihr sowas?