请用Python写一个函数，返回一个整数列表中第二小的数，有重复的元素也要求跳过。如果列表为空或只有重复元素则返回None。代码中必须包含类型注解。
user
```python
def find_second_smallest(nums: List[int]) -> Optional[int]:
    if not nums or len(set(nums)) == 1:
        return None
    sorted_unique_nums = sorted(set(nums))
    return sorted_unique_nums[1] if len(sorted_unique_nums) > 1 else None
```
assistant