```python
def team_headcount(chart: dict, name: str) -> int:
    """
    Calculate the total number of workers covered by a given name in a shift chart.
    
    Args:
    chart (dict): A dictionary representing the shift chart where keys are worker names
                  and values are lists of names reporting directly to the key.
    name (str): The name of the worker to calculate the headcount for.
    
    Returns:
    int: The total number of workers covered by the given name.
    
    Raises:
    ValueError: If the chart is not a dictionary, the name is not a key of the chart,
                the reports are not a list, or a report is not a string.
    """
    if not isinstance(chart, dict):
        raise ValueError("Chart must be a dictionary.")
    if name not in chart:
        raise ValueError("Name is not a key of the chart.")
    if not isinstance(chart[name], list):
        raise ValueError("Reports must be a list.")
    for report in chart[name]:
        if not isinstance(report, str):
            raise ValueError("Report must be a string.")
    
    def count_workers(worker):
        count = 1
        for report in chart[worker]:
            count += count_workers(report)
        return count
    
    return count_workers(name)
```