Fri, 14 jun 2019 - 18:29, Jordan Harband <[email protected]> wrote:
>
> `nameof whatever` → `Object.keys({ whatever })[0]`, but I'm a bit confused
> why it'd be better to type `nameof foo` in code, rather than `'foo'` - if you
> change `foo` to `bar`, you have to change both of them anyways.
>
Exactly, if you already have the name of the property beforehand in
design time why not write it as a string literal
Again, the only justifiable use case is refactoring tools, but even
today that can be arranged with static code analysis
You can safe guard a string literal to be a property of a type in
Typescript with a bit of handwork
``` ts
interface Options {
userName?: string;
}
// If you change the property in the interface without changing here, Typescript
// will raise a error informing that 'userName' is not a valid key of Options
const userNameKey: keyof Options = 'userName';
if (options.userName === undefined) {
throw new ParamNullError(userNameKey);
}
```
--
Atenciosamente,
Augusto Borges de Moura
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss