**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
def __init__(self):
                self.warnings = __import__('warnings')
            def __getattr__(self, name):
                return getattr(self.warnings, name)
            def __dir__(self):
                return dir(self.warnings)
            def warn(self, message, category=None, stacklevel=1, source=None):
                self.warnings.warn(message, category, stacklevel + 2, source)
        if func.__globals__.get('warnings') is sys.modules['warnings']:
            
            
            
            
            func.__globals__['warnings'] = autostacklevel_warn()
        @functools.wraps(func)
        def apply_defaults(self, *args: Any, **kwargs: Any) -> Any:
            from airflow.models.dag import DagContext
            from airflow.utils.task_group import TaskGroupContext
            if len(args) > 0:
                raise AirflowException("Use keyword arguments when initializing operators")
            dag_args: Dict[str, Any] = {}
            dag_params: Dict[str, Any] = {}
            dag = kwargs.get('dag') or DagContext.get_current_dag()
            if dag:
                dag_args = copy.copy(dag.default_args) or {}
                dag_params = copy.copy(dag.params) or {}
                task_group = TaskGroupContext.get_current_task_group(dag)
                if task_group:
                    dag_args.update(task_group.default_args)
            params = kwargs.get('params', {}) or {}