If you like dynamic types have you considered using protocols? They are used precisely to type duck typed code.