nameof
in TypeScript.
Monorepo for ts-nameof projects:
- ts-nameof (TypeScript compiler)
- babel-plugin-ts-nameof (Babel compiler)
- ts-nameof.macro (Babel compiler)
nameof(console);
nameof(console.log);
Transforms to:
"console";
"log";
nameof<MyInterface>();
nameof<Array<MyInterface>>();
nameof<MyNamespace.MyInnerInterface>();
Transforms to:
"MyInterface";
"Array";
"MyInnerInterface";
This is useful when working in the type domain.
nameof<MyInterface>(o => o.prop);
Transforms to:
"prop";
nameof.full(console.log);
nameof.full(window.alert.length, 1);
nameof.full(window.alert.length, 2);
nameof.full(window.alert.length, -1);
nameof.full(window.alert.length, -2);
nameof.full(window.alert.length, -3);
Transforms to:
"console.log";
"alert.length";
"length";
"length";
"alert.length";
"window.alert.length";
nameof.full<MyNamespace.MyInnerInterface>();
nameof.full<MyNamespace.MyInnerInterface>(1);
nameof.full<Array<MyInterface>>();
Transforms to:
"MyNamespace.MyInnerInterface";
"MyInnerInterface";
"Array";
nameof.full<MyInterface>(o => o.prop.prop2);
nameof.full<MyInterface>(o => o.prop.prop2.prop3, 1);
Transforms to:
"prop.prop2";
"prop2.prop3";