Digamos que tengo el siguiente tipo:
type Event = {
name: string;
dateCreated: string;
type: string;
}
Ahora quiero extender este tipo, es decir
type UserEvent extends Event = {
UserId: string;
}
Esto no funciona ¿Cómo puedo hacer esto?
javascript
typescript
Kousha
fuente
fuente
type
palabra clave se utiliza para definir alias de tipo , no interfaces o clases.Respuestas:
La palabra clave
extends
se puede usar solo para interfaces y clases.Si solo desea declarar un tipo que tiene propiedades adicionales, puede usar el tipo de intersección :
ACTUALIZACIÓN para TypeScript 2.2, ahora es posible tener una interfaz que amplíe el tipo de objeto , si el tipo cumple algunas restricciones:
No funciona al revés:
UserEvent
debe declararse como interfaz, notype
si desea utilizar laextends
sintaxis.Y todavía es imposible de usar
extend
con tipos arbitrarios ; por ejemplo, no funciona siEvent
es un parámetro de tipo sin restricciones.fuente
interface A<T> extends B<T> {blar}
Una interfaz solo puede extender un tipo de objeto o una intersección de tipos de objeto con miembros conocidos estáticamenteinterface Identifiable<T> extends T { id: string }
me da el error "Una interfaz solo puede extender un tipo de objeto o una intersección de tipos de objeto con miembros conocidos estáticamentepuedes intersecar tipos:
en algún lugar de tu código ahora puedes hacer:
fuente
Lo que estás tratando de lograr es equivalente a
La forma en que definió los tipos no permite especificar la herencia, sin embargo, puede lograr algo similar usando los tipos de intersección, como señaló Artem .
fuente
interface
cuando realmente me refiero a untype
Puede estar por debajo del enfoque será útil para alguien TS con reactjs
fuente