github: https://github.com/Jessie-jzn
sitio web: https://www.jessieontheroad.com/
1. Comprobación de tipo estático
La principal ventaja de TypeScript es su verificación de tipos estáticos, que ayuda a detectar errores comunes durante la fase de compilación en lugar del tiempo de ejecución. Esto mejora la confiabilidad y estabilidad del código.
2. Experiencia de edición de código mejorada
El sistema de tipos de TypeScript permite funciones más precisas de finalización de código, refactorización, navegación y documentación en los editores, lo que aumenta significativamente la eficiencia del desarrollo.
3. Mantenibilidad de código mejorada
Las declaraciones de tipo facilitan la comprensión de las intenciones y la estructura del código, lo cual es particularmente beneficioso en entornos de desarrollo en equipo.
4. Funciones avanzadas de idioma
TypeScript admite funciones avanzadas que no están presentes en JavaScript, como interfaces, enumeraciones y genéricos, lo que facilita el desarrollo de código más estructurado y escalable.
5. Mejor soporte de herramientas
TypeScript ofrece varias opciones de compilación para optimizar el código JavaScript generado y admite diferentes entornos JS al compilar TypeScript en JavaScript compatible.
Mecanografiado | JavaScript | |
---|---|---|
Sistema de tipos | Escritura estática con comprobaciones de tipo en tiempo de compilación. Se pueden especificar tipos para variables, parámetros de funciones y valores de retorno. | Escritura dinámica con comprobaciones de tipo en tiempo de ejecución, lo que puede provocar errores de tiempo de ejecución relacionados con el tipo. |
Escribir anotaciones | Admite anotaciones de tipo para definir tipos explícitamente. Por ejemplo, let name: string = "Alice"; | Sin anotaciones de tipo. Los tipos se determinan en tiempo de ejecución. |
Compilación | Requiere compilación en JavaScript. El compilador de TypeScript busca errores de tipo y genera código JavaScript equivalente. | Se ejecuta directamente en navegadores o Node.js sin un paso de compilación. |
Programación orientada a objetos | Funciones de programación orientada a objetos más ricas, como clases, interfaces, clases abstractas y modificadores de acceso. | Funciones básicas de programación orientada a objetos con herencia basada en prototipos. |
Funciones avanzadas | Incluye todas las funciones de ES6 y ES7, además de funciones adicionales como genéricos, enumeraciones y decoradores. | Es compatible con ES6 y estándares posteriores, pero carece de algunas de las funciones avanzadas proporcionadas por TypeScript. |
Los genéricos permiten que funciones, clases e interfaces funcionen con cualquier tipo y al mismo tiempo aplican la seguridad de tipos.
Ejemplo:
function identity(arg: T): T { return arg; } const numberIdentity = identity (42); const stringIdentity = identity ("Hello");
En este ejemplo, la función de identidad utiliza una
let anyVar: any; let unknownVar: unknown; anyVar = 5; anyVar.toUpperCase(); // No compile-time error, but might cause runtime error unknownVar = "Hello"; if (typeof unknownVar === "string") { unknownVar.toUpperCase(); // Type check ensures safety }
const obj = { name: "John" }; obj.name = "Doe"; // Allowed interface User { readonly id: number; name: string; } const user: User = { id: 1, name: "John" }; user.name = "Doe"; // Allowed user.id = 2; // Error, `id` is readonly
Los decoradores son una característica especial de TypeScript que permite agregar metadatos o modificar clases, métodos, propiedades o parámetros.
Tipos:
Ejemplos:
function sealed(constructor: Function) { Object.seal(constructor); Object.seal(constructor.prototype); } @sealed class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return `Hello, ${this.greeting}`; } }
function logMethod(target: any, propertyName: string, descriptor: PropertyDescriptor) { const originalMethod = descriptor.value; descriptor.value = function (...args: any[]) { console.log(`Method ${propertyName} called with args: ${JSON.stringify(args)}`); return originalMethod.apply(this, args); }; } class Calculator { @logMethod add(a: number, b: number): number { return a b; } }
Uso:
Los decoradores se habilitan estableciendo experimentalDecorators en verdadero en tsconfig.json.
interfaz y tipo se utilizan para definir tipos de objetos, pero tienen algunas diferencias:
interfaz | tipo | |
---|---|---|
Uso básico | Define la forma de los objetos, incluidas las propiedades y los métodos. | Define tipos primitivos, tipos de objetos, tipos de unión, tipos de intersección, etc. |
Extensión | Admite la fusión de declaraciones. Se fusionan automáticamente varias declaraciones de la misma interfaz. | No admite la fusión de declaraciones. |
Tipos de unión e intersección | No compatible. | Apoya el sindicato (` |
Alias de tipos primitivos | No compatible. | Admite alias de tipos primitivos. |
Tipos asignados | No compatible. | Admite tipos asignados. |
Implementación de clase | Admite la implementación de clases mediante implementos. | No admite la implementación directa de clases. |
Estas preguntas y respuestas deberían ayudar a prepararse para las entrevistas de TypeScript al cubrir conceptos fundamentales y uso práctico.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3