Verifique se um objeto implementa uma interface em tempo de execução com o TypeScript

Carrego um arquivo de configuração JSON em tempo de execução e uso uma interface para definir sua estrutura esperada:

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

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

interface DebugConfig {
    logLevel?: number;
}

...

Isso facilita o acesso às várias propriedades, pois eu posso usar preenchimentos automáticos etc.

Pergunta, questão:existe uma maneira de usar esta declaração para verificar a correção do arquivo que carrego? ou seja, que eu não tenho propriedades inesperadas?

questionAnswers(9)

yourAnswerToTheQuestion