ES can befit from `nameof` feature the same way as TS. There is no TS specific in it. It was ask to introduce in TS as a workaround since TS is considered as extention of ES.
Case 1. Function guard. ``` function func1(param1, param2, param3, userName, param4, param5) { if (userName == undefined) { throw new ArgumentNullError(nameof userName); // `ArgumentNullError` is a custom error, derived from `Error`, composes error message like "Argument cannot be null: userName". } } ``` Case 2. Access extended information an object property. Assume a function ``` function protoPropertyIsSet(message, property) { return message != null && message.hasOwnProperty(property); } ``` Then in code you use it as `if (protoPropertyIsSet(msg, "expiration_utc_time")) {... }`. Having `nameof` would allow you to do that `if (protoPropertyIsSet(msg, nameof msg.expiration_utc_time)) {... }`. You get more robust code. On Fri, Jun 14, 2019 at 5:46 PM Augusto Moura <augusto.borg...@gmail.com> wrote: > Can you list the benefits of having this operators? Maybe with example use > cases > > If I understand it correctly, the operator fits better in compiled > (and typed) languages, most of the use cases don't apply to dynamic > Javascript > The only legit use case I can think of is helping refactor tools to > rename properties (but even mismatch errors between strings and > properties names can be caught in compile time using modern > Typescript) > > Em sex, 14 de jun de 2019 às 10:05, Stas Berkov > <stas.ber...@gmail.com> escreveu: > > > > Can we revisit this issue? > > > > > > In C# there is `nameof`, in Swift you can do the same by calling > > > > ``` > > > > let keyPath = \Person.mother.firstName > > > > NSPredicate(format: "%K == %@", keyPath, "Andrew") > > > > ``` > > > > Let's introduce `nameof` in ES, please. > > > > > > Devs from TypeScript don't want to introduce this feature in TypeScript > unless it is available in ES ( > https://github.com/microsoft/TypeScript/issues/1579 ) > > > > This feature is eagarly being asked by TypeScript community. > > > > > > I understand there are couple issues related to `nameof` feature in ES. > They are: minification and what to do if user already has `nameof` function. > > > > > > Minification. > > > > 1. If your code to be minimized be prepared that variable names will > also change. > > > > 2. (just a possibility) Minimizer can have option to replace > `nameof(someVar)` with result of `nameof` function. > > > > > > > > What if user already has `nameof` function. > > > > 1. To maintain status quo we can user `nameof` function having priority > over newly introduced language feature. > > > > 2. OR we can use `typeof` syntax, e.g. `nameof msg.userName` (// returns > "userName" string) > > > > _______________________________________________ > > es-discuss mailing list > > es-discuss@mozilla.org > > https://mail.mozilla.org/listinfo/es-discuss > > > > -- > Atenciosamente, > > Augusto Borges de Moura >
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss