Preheat the oven to 350˚F. Lightly grease a 2 1/2 quart baking dish with cooking spray (or butter).
Poke the sweet potatoes with a fork all over. Place on a baking sheet lined with aluminum foil or a baking mat. Bake until soft and fork tender, about 1 hour. When cool enough to handle, scoop the flesh out of the skins and place in a large bowl. Mash potatoes until very smooth. Set aside to cool to room temperature (you can also speed this up by placing the bowl in the fridge or freezer).
Add eggs, sugar, butter, vanilla, milk, and salt. Using an electric hand mixer (or stand mixer), beat until very smooth and fluffy. There should be no lumps left. Add the mixture to the prepared baking dish, smoothing into an even layer with a spoon.
Add the topping ingredients to a medium bowl and stir to combine. Sprinkle the nut mixture on top of the sweet potato in an even layer.
Bake for 40 minutes, until the topping is slightly browned. Let the casserole rest for 5 minutes before serving.