Extender tipo en TypeScript

Rana Hasnain Khan 21 junio 2023
Extender tipo en TypeScript

Este artículo nos ayuda a comprender cómo funciona extender el tipo en TypeScript con la ayuda de algunos ejemplos.

Extender tipo en TypeScript

Desafortunadamente, en TypeScript, no es posible extender tipos. Solo podemos ampliar la Interfaz y la clase.

Podemos usar interfaces o clases para especificar tipos y extenderlos. Revisaremos ejemplos e intentaremos extender la interfaz para tipos.

Tenemos una interfaz llamada Proyecto, que contiene dos métodos que se describen a continuación.

Uno se llama submit(), y el segundo se llama queue().

interface Project {
    submit(data: string): boolean
    queue(data: string): boolean
}

Tenemos muchas clases que usan la interfaz proyecto. Tenemos que usar un nuevo método para la interfaz de proyecto que envía cualquier requisito.

Requirements(data: string, id: number): void

Si queremos romper el código actual usando la interfaz de proyecto, TypeScript proporciona un método más tarde () que se puede usar. Podemos crear una nueva interfaz que amplíe la interfaz proyecto evitando esto.

interface ProjectManagement extends Project {
    Requirements(data: string, id: number): boolean
}

Podemos usar la palabra clave extiende para extender una interfaz con esta sintaxis.

interface D {
    d(): void
}
interface K extends D {
    k(): void
}

La interfaz K amplía la interfaz D. Ambos tienen métodos d() y k().

La interfaz ProjectManagement se hace cargo de los dos métodos submit() y queue() de la interfaz project, como clases.

class PM implements ProjectManagement {
    Requirements(data: string, id: number): boolean {
        console.log(`Send data to ${id} in ${sec} ms.`);
        return true;
    }
    submit(data: string): boolean {
        console.log(`Sent data to ${id} after ${sec} ms. `);
        return true;
    }
    queue(data: string): boolean {
        console.log(`Queue an project to ${id}.`);
        return true;
    }
}

Interfaces que extienden múltiples interfaces en TypeScript

Una interfaz puede extender muchas interfaces y crear una mezcla de todas las interfaces. Vamos a discutir con la ayuda de un ejemplo.

interface A {
    a(): void
}
interface E {
    e(): void
}
interface M extends E, A {
    m(): void
}

Podemos ver que la interfaz M extiende las interfaces E y A. M tiene todos los métodos de interfaz E y A, a() y e().

Interfaces que amplían las clases en TypeScript

La interfaz se hace cargo de las propiedades y métodos de la clase. TypeScript otorga una interfaz para extender una clase.

La interfaz se hace cargo de los miembros privados y protegidos de la clase. La interfaz no puede hacerse cargo solo de los miembros públicos.

La interfaz de esa clase solo puede ser implementada por la clase o subclase desde la que se extiende la interfaz. Significa cuando una interfaz extiende una clase con miembros privados o protegidos.

Si implementamos la interfaz desde una clase que no es una subclase de esa clase que toma el control de la interfaz, obtendremos un error.

Aquí hay un ejemplo a continuación.

class Key {
    private value: boolean;
}
interface Lock extends Key {
    enable(): void
}
class FingerPrint extends Key implements Lock {
    enable() { }
}
class Notification extends Key implements Lock {
    enable() { }
}
class Identity extends Key { }{
    enable() { }
}

Una interfaz puede extender una o varias interfaces existentes. La clase o subclase solo puede implementar la interfaz de esa clase.

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn