@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.
27 lines (26 loc) • 726 B
TypeScript
declare function nameof<T extends Function>(fn: T): string;
declare function nameof<T extends object>(key: keyof T): keyof T;
declare function nameof<T extends object>(obj: T): keyof T;
declare function nameof<
T,
K1 extends keyof T
>(obj: T, k1: K1): K1;
declare function nameof<
T,
K1 extends keyof T,
K2 extends keyof T[K1]
>(obj: T, k1: K1, k2: K2): K2;
declare function nameof<
T,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2]
>(obj: T, k1: K1, k2: K2, k3: K3): K3;
declare function nameof<
T,
K1 extends keyof T,
K2 extends keyof T[K1],
K3 extends keyof T[K1][K2],
K4 extends keyof T[K1][K2][K3]
>(obj: T, k1: K1, k2: K2, k3: K3, k4: K4): K4;
export { nameof, nameof as default };