+doc #15537 add Typed router pattern

Port of typed router pattern to master