Cannot hide a canvas from trigger (err:Cannot implicitly convert type `UnityEngine.Canvas' to `UnityEngine.GameObject')

Hello i am still a begginer in scripting and i am looking trought some tutorial to make some test.
i am actually working on a script that hide a canvas when the player is on a zone or not (a light bulb that is Lighten when the player is in the light or not)

Its made from 2 script (one on the player itself and one on every light source with a sphere collider set to trigger)

LightCanvas is parented to another canvas.

Here’s the one on the player

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class InLight : MonoBehaviour {

	public bool OnOff;
	private GameObject lightUI;

	void Start ()
	{
		SetInitialReferences ();
	}

	public void Inlight()
	{
		if(OnOff = true)
		{
			lightUI.SetActive(true);
			Debug.Log ("On");
		}
	}

	public void Outlight()
	{
		if(OnOff = false)
		{
			lightUI.SetActive(false);
			Debug.Log ("Off");
		}
	}

	void SetInitialReferences()
	{
		lightUI = GameObject.Find("LightCanvas").GetComponent<Canvas>();
	}


}

and here’s the one on every light source:

using UnityEngine;
using System.Collections;

public class LightZone : MonoBehaviour
{

	private InLight illumination;

	void Start ()
	{
		SetInitialReferences();
	}

	void OnTriggerEnter (Collider other)
	{
		illumination.Inlight ();
		//Debug.Log (other.name+" is in the light");
	}

	void OnTriggerExit (Collider other)
	{
		illumination.Outlight ();
		//Debug.Log (other.name+" is in the Dark");
	}

	void SetInitialReferences()
	{
		illumination = GameObject.Find("Player1").GetComponent<InLight>();
	}
}

I get that error in the console:
Assets/MyAsset/Scripts/InLight.cs(35,17): error CS0029: Cannot implicitly convert type UnityEngine.Canvas' to UnityEngine.GameObject’

private GameObject lightUI;

void SetInitialReferences()
     {
         lightUI = GameObject.Find("LightCanvas").GetComponent<Canvas>();;
     }

light UI → GameObject and Canvas → Component. Here you are trying to call component as a GameObject. If you want to use component change lightUI as a Component variable. By the way your approach is not the best practice here. You can use another approach without using Find() method too much. It is not good for performance.

Script on the player:

(plug the image in the required field in unity inspector)

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class InLight : MonoBehaviour
{

	public bool OnOff;
	public Image lightUI;



	public void Offlight ()
	{
		OnOff = false;
			lightUI.enabled = false;
			Debug.Log ("OFF");

	}

	public void Onlight ()
	{
		OnOff = true;
			lightUI.enabled = true;
			Debug.Log ("ON");
			
			

			}
		
		


}

Script on every light source:

(plug the player1 in the required field in unity inspector)

using UnityEngine;
using System.Collections;

public class LightZone : MonoBehaviour
{
	public InLight illumination;



	void OnTriggerEnter (Collider other)
	{
		illumination.Onlight ();
		Debug.Log (other.name+" is in the light");
	}

	void OnTriggerExit (Collider other)
	{
		illumination.Offlight ();
		Debug.Log (other.name+" is in the Dark");
	}

}