Есть ли соглашение об использовании псевдонима типа, который маскирует необязательный? Например, если я хочу создать псевдоним типа для подробного необязательного типа, такого как UnsafeMutablePointer<Bar>?
, я могу сделать одно из следующего:
// Approach 1 - mask the optional in the type alias
typealias Foo = UnsafeMutablePointer<Bar>?
func bat(baz: Foo) { ... }
// Approach 2 - include the optional in the typealias usage where needed
typealias Foo = UnsafeMutablePointer<Bar>
func bat(baz: Foo?) { ... }
Эти подходы выполняют sh то же самое, хотя Я бы подумал, что второй предпочтительнее, потому что кажется более явным, что аргумент функции является необязательным.
Есть ли ситуации, когда первый подход может быть предпочтительным, и есть ли какие-либо рекомендации за / против такого использования?