We created this util method while working on Phonetradr which can give you type-safe access to deep properties with Typescript:
/**_x000D_
* Type-safe access of deep property of an object_x000D_
*_x000D_
* @param obj Object to get deep property_x000D_
* @param unsafeDataOperation Function that returns the deep property_x000D_
* @param valueIfFail Value to return in case if there is no such property_x000D_
*/_x000D_
export function getInSafe<O,T>(obj: O, unsafeDataOperation: (x: O) => T, valueIfFail?: any) : T {_x000D_
try {_x000D_
return unsafeDataOperation(obj)_x000D_
} catch (error) {_x000D_
return valueIfFail;_x000D_
}_x000D_
}_x000D_
_x000D_
//Example usage:_x000D_
getInSafe(sellTicket, x => x.phoneDetails.imeiNumber, '');_x000D_
_x000D_
//Example from above_x000D_
getInSafe(foo, x => x.bar.check, null);
_x000D_