@nameof/nameof
Version:
A tiny utility for safely extracting property names from TypeScript objects — inspired by C#'s [`nameof`](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/nameof) operator.
22 lines (21 loc) • 594 B
JavaScript
// index.ts
function nameof(arg1, arg2) {
if (arguments.length === 2 && (typeof arg1 === "object" || typeof arg1 === "function") && arg1 !== null && typeof arg2 === "string") {
return arg2;
}
if (arguments.length === 1 && typeof arg1 === "function") {
return arg1.name;
}
if (arguments.length === 1 && typeof arg1 === "object" && arg1 !== null) {
const keys = Object.keys(arg1);
if (keys.length !== 1) {
throw new Error("Object must have exactly one string-key property");
}
return keys[0];
}
return arg1;
}
export {
nameof,
nameof as default
};