Если вам нужны только классы Page, DerivedPage, AnotherDerivedPage;Вы можете использовать что-то следующим образом:
function foo (foo: Page | DerivedPage | AnotherDerivedPage)
Если вам нужен аргумент, расширяющий Page, вероятно, ниже приведен способ:
function foo<T extends Page> (a: T) { ... }
РЕДАКТИРОВАТЬ:
Добавление примера такого типа для использования с функциями стрелок
type foo<T extends Page> = (v: T) => void
const fn: foo<DeribedPage> = (v) => { /* ... */ }