Aliases are only expanded as the first argument, or after another alias with a trailing space on the end of the command.
From bash's help alias:
A trailing space in VALUE causes the next word to be checked for alias substitution when the alias is expanded.
To do this, try the following:
alias watch='watch '
alias ll='ls -l --color=tty'
watch ll
Bear in mind that some versions of watch strip colours by default, on some versions this can be stopped by using --color or -G.
For some other situations where this is inconvienient, you might want to use an array instead, for example:
ll=(ls -l --color=tty)
# Each of the program arguments are passed separately to watch
watch "${ll[@]}"
# All of the program arguments are passed as one argument to watch
watch "${ll[*]}"