Issue #390
An object ’s property can be null or undefined.
Accessing step by step is tedious
props.user &&
props.user.posts &&
props.user.posts[0] &&
props.user.posts[0].comments
Dynamic parsing path is too clever and involves string in the end, which is a no no
const get = (p, o) =>
  p.reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, o)
const getUserComments = get(['user', 'posts', 0, 'comments'])
Instead let’s use function and catch errors explicitly, and defaults with a fallback
const get: (f, defaultValue) => {
    try {
      	const value = f()
      	if (isNotNullOrUndefined(value)) {
        	return value
      	} else {
        	return defaultValue
      	}
    } catch {
     	return defaultValue
    }
}
const comments = get(() => { .user.posts[0].comments }, [])
Start the conversation