**Description**
The `airflow.models.baseoperator.chain()` is a very useful and convenient way to add sequential task dependencies in DAGs but the function only supports tasks of a `BaseOperator` type.

**Use case / motivation**
Users who create tasks via the `@task` decorator will not be able to use the `chain()` function to apply sequential dependencies that do not share an `XComArg` implicit dependency.

**Are you willing to submit a PR?**
Absolutely. 🚀 

**Related Issues**
None

airflow/models/baseoperator.py
if TYPE_CHECKING:
    from airflow.utils.task_group import TaskGroup
ScheduleInterval = Union[str, timedelta, relativedelta]
TaskStateChangeCallback = Callable[[Context], None]
T = TypeVar('T', bound=Callable)
class BaseOperatorMeta(abc.ABCMeta):
    """Metaclass of BaseOperator."""
    @classmethod
    def _apply_defaults(cls, func: T) -> T:
        """
        Function decorator that Looks for an argument named "default_args", and
        fills the unspecified arguments from it.
        Since python2.* isn't clear about which arguments are missing when
        calling a function, and that this can be quite confusing with multi-level
        inheritance and argument defaults, this decorator also alerts with
        specific information about the missing arguments.
        """
        
        
        
        
        sig_cache = signature(func)
        non_optional_args = {
            name
            for (name, param) in sig_cache.parameters.items()
            if param.default == param.empty
            and param.name != 'self'
            and param.kind not in (param.VAR_POSITIONAL, param.VAR_KEYWORD)
        }
        class autostacklevel_warn: