¿Cuáles son las diferencias entre los siguientes?
type Foo = { 
    foo: string 
};
interface Foo {
   foo: string;
}
                    
                        javascript
                                typescript
                                
                    
                    
                        Martiansnoop
fuente
                
                fuente

Respuestas:
Las interfaces se pueden ampliar
y tambien aumentado
Los alias de tipo, sin embargo, pueden representar algunas cosas que las interfaces no pueden
Entonces, en general, si solo tiene un tipo de objeto simple, como se muestra en su pregunta, una interfaz suele ser un mejor enfoque. Si desea escribir algo que no se puede escribir como interfaz, o simplemente quiere darle un nombre diferente a algo, un alias de tipo es mejor.
fuente
Type aliases, however, can represent some things interfaces can'tMe parece que sus ejemplosNeatAndCoolyJustSomeOtherNamese pueden crear como interfaz que amplíe el existenteNeat,CooloSomeTypetipos.interface NeatAndCool extends Neat, Cool {}interface JustSomeOtherName extends SomeType {}Además, se puede implementar una interfaz .
fuente
class Thing implements Neat, CoolTipos es algo así como Interfaces y viceversa: ambos pueden implementarse mediante una clase. pero hay algunas diferencias importantes: 1. cuando Type es implementado por una clase, las propiedades que pertenecen al Type deben ser inicializadas dentro de la clase, mientras que con Interface deben ser declaradas. 2. como mencionó @ryan: la interfaz puede extender otra interfaz. Los tipos no pueden.
fuente
Las diferencias entre estos también están ya en este hilo.
Aquí
type Fooyinterface Fooparece casi similar por lo que es confuso.interfaceEs contrato que las siguientes propiedades (aquífoo:string) deben estar allí en un objeto.interfaceno lo esclass. Se utiliza cuando el idioma no admite herencia múltiple. Entoncesinterfacepuede ser una estructura común entre diferentes clases.Pero
typeyinterfacese utilizan en contextos muy diferentes.Aquí
typedefooesFooytodayesDate. Es como una declinación variable que contiene la información del tipo de otra variable.typees como un superconjunto de interfaces, clases, firmas de funciones, otros tipos o incluso valores (comotype mood = 'Good' | 'Bad'). Al final setypedescribe la posible estructura o valor de una variable.fuente
Es incorrecto decir "Se pueden implementar interfaces", ya que también se pueden implementar tipos
Aunque puede hacer esto, no puede implementar un tipo que sea una Unión de tipos, lo cual tiene mucho sentido honestamente :)
fuente
type en el mecanografiado se utiliza para hacer referencia a tipos ya existentes . No se puede extender como
interface. Ejemplos detypeson:puede usar Rest y Spread en tipos:
La interfaz, por otro lado, le permite crear un NUEVO TIPO.
fuente