Даже если во второй версии вы не явно говорите, что эта переменная имеет тип TimerData
, это вывод. Это должно быть TimerData
. Вы делаете больше, чем просто объявляете это, вы также назначаете ему только что созданный TimerData
. Когда тип может быть выведен таким образом, вам не нужно явно объявлять его (но вы все равно можете, если хотите, как в первой версии).
Теперь, если вы объявили переменную только без создания если в той же строке (ie вы удаляете = TimerData()
), то у вас нет выбора, вы должны явно указать тип как TimerData
.
Swift должен знать тип каждой переменной во время компиляции ( статически ). Но это не значит, что вам нужно явно записывать тип каждой переменной, часто это просто вывод.