What do you think about a C# 6 like nameof() expression for

Stas Berkov stas.berkov at gmail.com
Fri Jun 14 19:52:52 UTC 2019

guest271314, what is you point against `nameof` feature?

If you don't like it - don't use it. Why prohibit this feature for
those who find it beneficial?

I see `nameof` beneficial in following cases

Case 1. Function guard.
function func1(options) {
   if (options.userName == undefined) {
       throw new ParamNullError(nameof options.userName); //
`ParamNullError` is a custom error, derived from `Error`, composes
error message like "Parameter cannot be null: userName".
 // `Object.keys({options.userName})[0]` will not work here

Case 2. Accessing property extended info
Those ES functions that accept field name as string.
const descriptor1 = Object.getOwnPropertyDescriptor(object1, 'property1');
const descriptor1 = Object.getOwnPropertyDescriptor(object1, nameof
 // `Object.keys({options1.property1})[0]` will not work here
2nd variant (proposed) has more chances not to be broken during
refactoring (robustness).

It would make devs who use IDE more productive and make their life
easier. Why not give them such possiblity and make them happy?

More information about the es-discuss mailing list