может вы просто в комментариях к конструктору пишете "а сюда ожидается объект с методами getVersion и setVersion" и в мире жс это норм, а может есть какая-то наворочанная аннотация, от которой жизнь становится легче, хз, потому и спрашиваю
Например если плюсы, там если шаблонный подход еще интереснее, на этапе инстанциирования не позволять разворачивать если шаблон неудовлетворяет требованиям, типо std::enable_if_t, is_arithmetic_t и прочее, короче метапрограмирование, так что жс решает эту жопу боль нормально