Optional Chaining Operator in JavaScript – Bene Studio

  • var user = { name: ‘Joe’ } – var zip = user.address.zip // ⚡⚡⚡Uncaught TypeError: Cannot read property ‘zip’ of undefinedIn this example we expect user.address.zip to exist but for some reason the address is missing from the user object.
  • Workaround #1: Logic Expressionsvar user = { name: ‘Joe’ } – var zip = user – user.address – user.address.zipNoisy and verbose.
  • Workaround #2: Ternary Operatorsvar user = { name: ‘Joe’ } – var zip = – user === undefined – ?
  • Workaround #3: Try-Catchvar user = { name: ‘Joe’ } – var ziptry { – zip = user.address.zip – } catch (error) { – zip = null – }Breaks control and has own scopes.
  • bin/babel index.jsThe Transpiled CodeTranspiled version of the index.js above: – var _user$address;var user = { – name: ‘Joe’ – };var zip = – user == null – ?

All of us usually confronts the situation where an expected member of a property chain is undefined or null. In this example we expect user.address.zip to exist but for some reason the address is…
Continue reading “Optional Chaining Operator in JavaScript – Bene Studio”

Announcing TypeScript 2.1

  • Do be careful though – TypeScript will assume the package has the type any , meaning you can do anything with it.
  • let a: Person[“age”]; This is the same as saying that n gets the type of the *name* property in Person.
  • With mapped types, we no longer have to create new partial or readonly variants of existing types either.
  • P gets bound to each of those literal types (even though it’s not used in this example), and gives the property the type boolean .
  • Mapped types are produced by taking a union of literal types, and computing a set of properties for a new object type.

For those who are unfamiliar, TypeScript is a language that brings you all the new features of JavaScript, along with optional static types. This gives you an editing experience that can’t be beat, along with stronger checks against typos and bugs in your code.
Continue reading “Announcing TypeScript 2.1”