rokucommunity / rokucommunity/brighterscript
Optional Chaining
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 208
- Forks
- 68
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 39
Description
When looking for a property value that's deep in a tree-like structure, one often has to check whether intermediate nodes exist:
if user.address AND user.address.street then
street = user.address.street
end if
Also, many API return either an object or Invalid, and one may want to extract a property from the result only when it is not Invalid:
fooInput = m.top.findNode('fooIinput')
if Invalid <> fooInput then
fooValue = fooInput.value
end if
The Optional Chaining Operator allows a developer to handle many of those cases without repeating themselves and/or assigning intermediate results in temporary variables:
street = user.address?.street
fooValue = m.top.findNode('fooInput')?.value
My examples above are just tweaks to the one on this repo: https://github.com/tc39/proposal-optional-chaining
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the optional chaining proposal linked in the issue and the existing BrightScript compiler support for language syntax. Confirm how the shown nested-property and Invalid-value examples should behave, then define completion around those examples compiling and producing the expected values.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100