### Apache Airflow version

2.1.3 (latest released)

### Operating System

Debian Buster

### Versions of Apache Airflow Providers

_No response_

### Deployment

Managed Services (Astronomer, Composer, MWAA etc.)

### Deployment details

Running `quay.io/astronomer/ap-airflow:2.1.3-buster` Docker image

### What happened

In the task attributes view of a BashOperator, the `template_ext` row doesn't show any value, while I would expect to see `('.sh', '.bash')`.

![image](https://user-images.githubusercontent.com/6249654/131467817-8620f68d-0f3d-491d-ad38-cbf5b91cdcb3.png)


### What you expected to happen

Expect to see correct `template_ext` value

### How to reproduce

Run a BashOperator and browse to Instance Details --> scroll down to `template_ext` row

### Anything else

Spent a little time trying to figure out what could be the reason, but haven't found the problem yet. Therefore created issue to track.

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/serialization/serialized_objects.py
cls,
        encoded_group: Dict[str, Any],
        parent_group: Optional[TaskGroup],
        task_dict: Dict[str, BaseOperator],
    ) -> Optional[TaskGroup]:
        """Deserializes a TaskGroup from a JSON object."""
        if not encoded_group:
            return None
        group_id = cls._deserialize(encoded_group["_group_id"])
        kwargs = {
            key: cls._deserialize(encoded_group[key])
            for key in ["prefix_group_id", "tooltip", "ui_color", "ui_fgcolor"]
        }
        group = SerializedTaskGroup(group_id=group_id, parent_group=parent_group, **kwargs)
        group.children = {
            label: task_dict[val]
            if _type == DAT.OP  
            else SerializedTaskGroup.deserialize_task_group(val, group, task_dict)
            for label, (_type, val) in encoded_group["children"].items()
        }
        group.upstream_group_ids = set(cls._deserialize(encoded_group["upstream_group_ids"]))
        group.downstream_group_ids = set(cls._deserialize(encoded_group["downstream_group_ids"]))
        group.upstream_task_ids = set(cls._deserialize(encoded_group["upstream_task_ids"]))
        group.downstream_task_ids = set(cls._deserialize(encoded_group["downstream_task_ids"]))
        return group
@dataclass
class DagDependency: