Ваш код работает нормально, потому что объявления функций подняты.
Поскольку линтер существует, чтобы помочь вам следовать лучшим практикам, но в этом случае то, что вы делаете, совершенно верно и задумано, возможно, это один из в тех случаях, когда можно отключить это правило :
if (x) {
// tslint:disable-next-line:no-use-before-define
B();
}
Вы также можете полностью отключить это правило , если вы считаете, что это не помогает для вашего проекта или настроив иначе.