I am struggling to understand this below implementation of the ERC-165 standard by OpenZeppelin. This is by default imported in the ERC721 token smart contract of OZ. I do get the aim of the ERC-165 standard but not this code snippet. And what does "type(IERC721)" function is actually doing ? Thanks a lot in advance for your help.
function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
return interfaceId == type(IERC721).interfaceId
|| interfaceId == type(IERC721Metadata).interfaceId
|| super.supportsInterface(interfaceId);