Compruebe si un objeto implementa una interfaz en tiempo de ejecución con TypeScript

Cargo un archivo de configuración JSON en tiempo de ejecución y uso una interfaz para definir su estructura esperada:

interface EngineConfig {
    pathplanner?: PathPlannerConfig;
    debug?: DebugConfig;
    ...
}

interface PathPlannerConfig {
    nbMaxIter?: number;
    nbIterPerChunk?: number;
    heuristic?: string;
}

interface DebugConfig {
    logLevel?: number;
}

...

Esto hace que sea conveniente acceder a las diversas propiedades ya que puedo usar autocompletados, etc.

Pregunta:¿Hay alguna manera de usar esta declaración para verificar la exactitud del archivo que cargo? es decir, que no tengo propiedades inesperadas?