@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.
21 lines (20 loc) • 426 B
JavaScript
// index.ts
function nameof(...args) {
const lastArg = args.at(-1);
if (typeof lastArg === "function") {
return lastArg.name;
}
if (typeof lastArg === "object" && lastArg !== null) {
const k = Object.keys(lastArg).at(0);
if (k) {
return k;
} else {
throw new Error("Object must have exactly one string-key property");
}
}
return lastArg;
}
export {
nameof,
nameof as default
};