TypeScript es un lenguaje de programación de código abierto que es un superconjunto de JavaScript, añadiendo funciones estáticas de tipado y objetos con base en clases. Una de las características más notables de TypeScript es su "tipado", y en realidad, TypeScript utiliza una combinación de tres principios de tipado: Gradual, Duck, y Dinámico. Por lo tanto, la respuesta correcta a la pregunta es "Todas las anteriores".
En el tipado gradual, las porciones de un código pueden ser manipuladas como dinámicamente tipadas, o estáticamente tipadas según sea necesario. Esto proporciona la flexibilidad del tipado dinámico y el control y la seguridad del tipado estático. Por ejemplo, puedes definir un tipo y luego cambiarlo posteriormente en tu código.
let algo: any = 123; // Tipo de dato dinámico
algo = 'Hola mundo'; // Cambiando el tipo a string
let otra: number = algo; // Error: El tipo 'string' no es asignable al tipo 'number'.
Duck typing es un principio de programación que dice que si un objeto anda como un pato y grazna como un pato, entonces es probable que sea un pato. En otras palabras, un objeto es de un tipo particular si tiene las propiedades y los métodos que se esperan de ese tipo, independientemente de su clase o herencia.
Por ejemplo, en lugar de verificar si un objeto es de una clase específica, comprobamos si tiene los métodos y propiedades que necesitamos.
interface Pato {
graznar(): void;
caminar(): void;
}
function actuarComoPato(objeto: any): void {
if(objeto.graznar && objeto.caminar) {
objeto.graznar();
objeto.caminar();
}
}
TypeScript también admite tipado dinámico. Puedes declarar una variable sin especificar su tipo. El compilador de TypeScript infiere automáticamente su tipo basado en el valor inicial.
let dinamico = "hola";
dinamico = 10; // Error
En conclusión, el principio de tipado de TypeScript no es único, sino una mezcla de principios de tipado gradual, duck y dinámico. Con esta flexibilidad, TypeScript proporciona a los desarrolladores el control sobre cómo quieren trabajar con los tipos, permitiéndoles elegir entre seguridad y flexibilidad donde sea necesario.