How do I update a field to use a different field_type?
To change the field type you would have to write an update_hook:

Example:

function entity_test_update_8001() {
  // To update the field schema we need to have no field data in the storage,
  // thus we retrieve it, delete it from storage, and write it back to the
  // storage after updating the schema.
  $database = \Drupal::database();

  // Retrieve existing field data.
  $user_ids = $database-&gt;select('entity_test', 'et')
    -&gt;fields('et', ['id', 'user_id'])
    -&gt;execute()
    -&gt;fetchAllKeyed();

  // Remove data from the storage.
  $database-&gt;update('entity_test')
    -&gt;fields(['user_id' =&gt; NULL])
    -&gt;execute();

  // Update definitions and schema.
  $manager = \Drupal::entityDefinitionUpdateManager();
  $storage_definition = $manager-&gt;getFieldStorageDefinition('user_id', 'entity_test');
  $storage_definition-&gt;setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED);
  $manager-&gt;updateFieldStorageDefinition($storage_definition);

  // Restore entity data in the new schema.
  $insert_query = $database-&gt;insert('entity_test__user_id')
    -&gt;fields(['bundle', 'deleted', 'entity_id', 'revision_id', 'langcode', 'delta', 'user_id_target_id']);
  foreach ($user_ids as $id =&gt; $user_id) {
    $insert_query-&gt;values(['entity_test', 0, $id, $id, 'en', 0, $user_id]);
  }
  $insert_query-&gt;execute();
}