TypeScript: Interfaz vs Clase vs Módulos vs Programa vs Función
Leí la especificación de TypeScript ubicada en: http://www.typescriptlang.org/Content/TypeScript%20Language%20Specification.pdf
Sin embargo, me confundió con lo siguiente:
- Interfaz
- Clase
- Módulos
- Programas
- Funciones.
- Declarar vs. var
¿Alguien podría ayudar brevemente a entender cuál de los anteriores se debe usar y cuándo? ¿La Interfaz y la Clase son iguales que en la versión de C#?
Respuesta #1
He hecho que estas respuestas coincidan con C# ya que mencionaste eso en tu pregunta, pero con suerte las respuestas también son útiles para las personas que vienen a TypeScript desde lenguajes similares.
Interfaz
Una interfaz en TypeScript es similar a las que has encontrado en C#. Es un contrato: si una de tus clases implementa una interfaz, promete tener ciertas propiedades o métodos que la interfaz documenta.
En TypeScript, una interfaz puede heredar de otra interfaz para extenderla y de una clase para capturar su implementación.
¡Siempre que algo parezca imposible en TypeScript, usualmente puedes resolverlo con una interfaz!
En TypeScript, las interfaces tienen un amplio rango de usos. Describen una estructura, por lo que pueden ser usadas en cualquier lugar donde uses un tipo (es decir, no solo para implementarlas en una clase, puedes usarlas para tipar variables, parámetros, valores de retorno, y así sucesivamente).
Clase
Esto es muy similar al concepto de una clase en C#. Puedes heredar de otras clases para ampliar o especializar el comportamiento.
Espacio de nombres
La palabra clave de espacio de nombres más reciente se utiliza para colocar un grupo de código dentro de un ámbito limitado. Esto es similar a los espacios de nombres en C#.
Módulo
Los módulos son mejores que los espacios de nombres cuando se trata de TypeScript. Un módulo (anteriormente conocido como módulo externo) es un archivo que es autónomo y no añade nada a tu ámbito global. Puedes cargar módulos en variables locales según los necesites. Los módulos proporcionan una buena manera de organizar tu código y cargar partes bajo demanda. Al usar módulos, es mejor evitar el uso de espacios de nombres. Los módulos son mejores que los espacios de nombres.
Programa
Un programa es una colección de módulos, clases. Esto es esencialmente lo que has escrito usando TypeScript.
Función/Método
Las clases contienen métodos, y también puedes escribir funciones independientes que no pertenecen a una clase.
Declare vs. var
var crea una nueva variable. declare se usa para decirle a TypeScript que la variable ha sido creada en otro lugar. Si usas declare, no se añade nada al JavaScript que se genera; simplemente es una pista para el compilador.
Por ejemplo, si usas un script externo que define var externalModule, usarías declare var externalModule para indicar al compilador de TypeScript que externalModule ya ha been configurado.