A typhoon struck China's southernmost island of Hainan on Tuesday, forcing the cancellation of dozens of flights as it headed northwest toward Vietnam.