Please solve the programming task below using a self-contained code snippet in a markdown code block.

You are given an m x n binary matrix grid. An island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.
The area of an island is the number of cells with a value 1 in the island.
Return the maximum area of an island in grid. If there is no island, return 0.
 
Please complete the following python code precisely:
```python
class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
```