This example uses OpenLayers v10.9.0. The latest is v.
Edit

#### Vector Tile Selection

vectortiles 6 selection 2

#####

Action type

Select features from vector tiles.

Click a rendered vector-tile feature to highlight it on the map. Click on an empty spot (ocean) to reset the selection. By changing the action type to "Multi Select" you can select multiple features at a time. With "Single Select on hover", features will be higlighted when the pointer is above them.

The selection layer is configured with `renderMode: 'vector'` for better performance on frequent redraws, i.e. when "Single Select on hover" is selected.

##### main.js

    import Map from 'ol/Map.js';
    import View from 'ol/View.js';
    import MVT from 'ol/format/MVT.js';
    import VectorTileLayer from 'ol/layer/VectorTile.js';
    import VectorTileSource from 'ol/source/VectorTile.js';
    import Fill from 'ol/style/Fill.js';
    import Stroke from 'ol/style/Stroke.js';
    import Style from 'ol/style/Style.js';

    // lookup for selection objects
    let selection = {};

    const country = new Style({
      stroke: new Stroke({
        color: 'gray',
        width: 1,
      }),
      fill: new Fill({
        color: 'rgba(20,20,20,0.9)',
      }),
    });
    const selectedCountry = new Style({
      stroke: new Stroke({
        color: 'rgba(200,20,20,0.8)',
        width: 2,
      }),
      fill: new Fill({
        color: 'rgba(200,20,20,0.4)',
      }),
    });

    const vtLayer = new VectorTileLayer({
      declutter: true,
      source: new VectorTileSource({
        maxZoom: 15,
        format: new MVT({
          idProperty: 'iso_a3',
        }),
        url:
          'https://ahocevar.com/geoserver/gwc/service/tms/1.0.0/' +
          'ne:ne_10m_admin_0_countries@EPSG%3A900913@pbf/{z}/{x}/{-y}.pbf',
      }),
      style: country,
    });

    const map = new Map({
      layers: [vtLayer],
      target: 'map',
      view: new View({
        center: [0, 0],
        zoom: 2,
        multiWorld: true,
      }),
    });

    // Selection
    const selectionLayer = new VectorTileLayer({
      map: map,
      renderMode: 'vector',
      source: vtLayer.getSource(),
      style: function (feature) {
        if (feature.getId() in selection) {
          return selectedCountry;
        }
      },
    });

    const selectElement = document.getElementById('type');

    map.on(['click', 'pointermove'], function (event) {
      if (
        (selectElement.value === 'singleselect-hover' &&
          event.type !== 'pointermove') ||
        (selectElement.value !== 'singleselect-hover' &&
          event.type === 'pointermove')
      ) {
        return;
      }
      vtLayer.getFeatures(event.pixel).then(function (features) {
        if (!features.length) {
          selection = {};
          selectionLayer.changed();
          return;
        }
        const feature = features[0];
        if (!feature) {
          return;
        }
        const fid = feature.getId();

        if (selectElement.value.startsWith('singleselect')) {
          selection = {};
        }
        // add selected feature to lookup
        selection[fid] = feature;

        selectionLayer.changed();
      });
    });

##### index.html

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8">
        <title>Vector Tile Selection</title>
        <link rel="stylesheet" href="node_modules/ol/ol.css">
        <style>
          .map {
            width: 100%;
            height: 400px;
          }
        </style>
      </head>
      <body>
        <div id="map" class="map"></div>
        <form>
          <label for="type">Action type &nbsp;</label>
          <select id="type">
            <option value="singleselect" selected>Single Select</option>
            <option value="multiselect">Multi Select</option>
            <option value="singleselect-hover">Single Select on hover</option>
          </select>
        </form>

        <script type="module" src="main.js"></script>
      </body>
    </html>

##### package.json

    {
      "name": "vector-tile-selection",
      "dependencies": {
        "ol": "10.9.0"
      },
      "devDependencies": {
        "vite": "^3.2.3"
      },
      "scripts": {
        "start": "vite",
        "build": "vite build"
      }
    }