I don't know wat is wrong with this code?

public class PlayerAttack : MonoBehaviour
{
[SerializeField] private float attackCooldown;
private Animator anim;
private PlayerMovement playerMovement;
private float cooldownTimer = Mathf.Infinity;

    private void Awake()
    {
        anim = GetComponent<Animator>();
        playerMovement = GetComponent<PlayerMovement>();
    }

    private void Update()
    {
        if (Input.GetMouseButton(0) && cooldownTimer > attackCooldown && playerMovement.canAttack())
            Attack();

        cooldownTimer += Time.deltaTime;
    }

    private void Attack()
    {
        anim.SetTrigger("attack");
        cooldownTimer = 0;
    }
}

My Error message:

There is no argument given that corresponds to the required formal parameter ‘position’ of 'PlayerMovement.canAttack(Vector2)

on line 15

playerMovement.canAttack()

requires a Vector2 parameter you forgot to provide.
So it should be something like

playerMovement.canAttack(someVector2)

I can’t see the implementation of your player movement, so it’s hard to guess what kind of Vector2 that should be.

Just like the error said: your method canAttack inside your PlayerMovement class expects a Vector2 as argument. However you call it without any parameter. We can’t tell you why this canAttack method needs a Vector2 position variable or what this method exactly do since it’s your method.