Open
Description
In our app, we have modules representing entity permissions.
e.g:
// Permissions.res
module Products = {
let createNew = "createPermissionString"
let viewExisting = "viewPermissionString"
let delete = "deletePermissionString"
}
// Permissions.resi
module Products = {
@genType let createNew: string
@genType let viewExisting: string
@genType let delete: string
}
However, because delete
is a reserved keyword , the compiler instead renames delete
to $$delete
without reflecting this in the generated tsx file.
// Permissions.gen.tsx
export const Products_createNew: string = PermissionBS.Products.createNew;
export const Products_viewExisting: string = PermissionBS.Products.viewExisting;
export const Products_delete: string = PermissionBS.Products.delete;
Thus any usage of Products_delete
in our typescript code would be undefined
because we're not consuming PermissionBS.Products.$$delete
.
Ideally, the developer avoids reserved keywords altogether, but if the compiler will allow and rename these, I'd expect the genTyped output to reflect any renaming done by the compiler.