ошибка?
Тайпскрипт не может понять, что тип "a" и "b" является строкой, если указан type: 'string'
https://www.typescriptlang.org/play?#code/KYDwDg9gTgLgBAG2PAxhAtmAhlYcC8cAPACpygzAB2AJgM5x0xQCWVA5nAD5xUCu6AEbAoAPgAUAKDhwsALjgkANNLiCFy1RDAwWEKnQUBvVTJgBPMMA3kQlWgyasOcAPxwA5E7bsPcBR78QiIepnDQNCIBWHQofjwekbGhMgC+KgCUBKJwJjJI8Oh8CLpgCCwiBOE6egYAdBGV+M2eMXFucACM-nAAtJ2qLABmcOLauvp0dRZWBC1ezD4eWXkycLgwfFBUcEUlLGUVUHAAVLJ1CBAoWEgAwhjYuOKCSrmM1HQsugBuX+YBghiwD8qQyqlS5AQdDwqxkGy2Oz2pXKlTO4iwfTUYLSklSkiAA
Так сужение не будет работать. У тебя типы первых двух аргментов никак не зависят от третьего (хоть в нем и написано некое условие).
Обсуждают сегодня