+doc #15537 add Typed router pattern