Verify application configuration from JSON file with matching type using TypeScript in an Angular project
If you're worried that someone may replace your schema during build, you should also be worried that someone might replace any other file as well. That's pure paranoia...
I would say the typescript way is to write the config in typescript as well. If that's not an option, then sure go for schema validation.
Anyway for your current implementation, there is a quite a lot that can be simplified in those conditions.
This:
candidate &amp;&amp; typeof candidate === 'object'

can be replaced with just
typeof candidate === 'object'

As there is no falsy value of type object.
Further those hasOwnProperty checks are not necesary. Deserialized json will have all those properties belong to their own. And if somebody passes an object that was not created by parsing json, but let's say instantiating a class, do you really care if those properties belong to the instance, the class or its parent?
export const isConfiguration = (candidate: any): candidate is Configuration =&gt; {
  return (
    typeof candidate === 'object' &amp;&amp;
    typeof candidate.endpoints === 'object' &amp;&amp;
    isEndpoint(candidate.endpoints.api) &amp;&amp;
    isEndpoint(candidate.endpoints.smsGateway) &amp;&amp;
    typeof candidate.auth === 'object' &amp;&amp;
    (candidate.auth.company === null || typeof candidate.auth.company === 'string')
  )
}