Qual a diferença entre a digitação de pato e o antigo tipo de 'variante' e / ou interfaces?

Eu continuo vendo a frase "digitação de pato" cagada e até me deparei com um ou mais exemplos de código. Eu também soupreguiçoso ocupado para fazer minha própria pesquisa, alguém pode me dizer, brevemente:

a diferença entre um 'tipo de pato' e um 'tipo de variante' do skool antigo, eforneça um exemplo de onde eu poderia preferir a digitação de pato sobre a digitação de variantes efornecer um exemplo de algo que eu fariater usar digitação de pato para realizar?

Eu não pretendo parecer avarento duvidando do poder desse 'novo' construto, e não estou esquivando o assunto recusando-me a fazer a pesquisa, mas estou gritando com todo o hype que se aglutina que tenho visto sobre ultimamente. Parecenão digitando (também conhecida como digitação dinâmica) para mim, então não estou vendo as vantagens imediatamente.

ADENDO: Obrigado pelos exemplos até agora. Parece-me que usar algo como 'O-> can (Blah)' é equivalente a fazer uma pesquisa de reflexão (o que provavelmente não é barato) e / ou é o mesmo que dizer (O é IBlah) que o compilador pode poder verificar por você, mas o último tem a vantagem de distinguir minha interface IBlah da sua interface IBlah, enquanto os outros dois não. É verdade que ter muitas interfaces minúsculas flutuando para todos os métodos ficaria confuso, mas, novamente, é possível verificar vários métodos individuais ...

... então, novamente, eu simplesmente não estou entendendo. É uma economia de tempo fantástica ou a mesma coisa velha em um saco novinho em folha? Onde está o exemplo querequer digitação de pato?

questionAnswers(10)

yourAnswerToTheQuestion