Ограничение у класса
Ограничения через extends работают и у параметров класса. Это важно, когда методы класса обращаются к полям значений типа T.
В задании реестр, который хранит элементы и ищет их по id:
Онлайн-редактор кода, разбор решения и отметки о прогрессе доступны после входа.
ВойтиСоздать аккаунт — бесплатноОграничения через extends работают и у параметров класса. Это важно, когда методы класса обращаются к полям значений типа T.
В задании реестр, который хранит элементы и ищет их по id:
Ошибки две. Внутри byId: «Property 'id' does not exist on type 'T'». И внизу: «Unused '@ts-expect-error' directive», то есть реестр строк создаётся без проблем, хотя искать в нём по id нечего.
Ситуация та же, что в задании 4, только с классом. Класс использует поле id у своих элементов, но нигде об этом не заявляет. Поэтому компилятор не разрешает обращаться к id внутри и не запрещает создавать реестр для типов без id снаружи.
Ограничь параметр типа класса так, чтобы в реестр попадали только элементы с числовым id. byId должен скомпилироваться, а new Registry<string>() стать ошибкой. Методы и код ниже класса менять не нужно.