Tipificación implícita , tipificación latente o digitación de pato ( ing. Duck digitación ) en lenguajes OOP : determinar el hecho de que un objeto implementa una determinada interfaz sin especificar o heredar explícitamente esta interfaz, sino simplemente implementando el conjunto completo de sus métodos .
El nombre del término proviene del inglés "duck test" (" prueba del pato "), que en el original suena así:
Si parece un pato, nada como un pato y grazna como un pato, entonces probablemente sea un pato.
Texto original (inglés)[ mostrarocultar] Si parece un pato, nada como un pato y grazna como un pato, entonces probablemente sea un pato.Se considera que un objeto implementa una interfaz si contiene todos los métodos de esa interfaz, independientemente de las relaciones en la jerarquía de herencia o de pertenecer a alguna clase en particular. Por lo tanto, la corrección de usar un objeto como valor de una determinada interfaz se determina estáticamente, por el compilador, en función del análisis de la clase a la que pertenece el objeto y verificando la implementación del conjunto de métodos requerido por él, o de forma dinámica, en función de la información sobre los tipos del entorno de tiempo de ejecución.
Este enfoque le permite trabajar polimórficamente con objetos que no están relacionados en una jerarquía de herencia . Es suficiente que todos estos objetos soporten el conjunto requerido de métodos .
Otro enfoque cercano es la creación de subtipos estructurales en OCaml , donde los tipos de objetos son compatibles si las firmas de sus métodos son compatibles , independientemente de la herencia declarada, todo lo cual se verifica en el momento de la compilación .
La tipificación pato resuelve problemas de tipificación jerárquica como:
La tipificación pato es prácticamente indispensable en los lenguajes de secuencias de comandos aplicados ("scripts"), donde debe trabajar con documentos externos al programa (script) (páginas web, documentos de texto y hojas de cálculo), cuya jerarquía de objetos no está disponible.
La escritura Duck también es compatible con los idiomas: Prolog , D , Perl , Smalltalk , Python , Objective-C , Ruby , JavaScript , TypeScript , Groovy , ColdFusion , Boo , Lua , Go , Scala .