Как реализовать наследование в этом случае в Typescript - PullRequest
0 голосов
/ 11 июня 2018

Моя проблема в том, что я хочу, чтобы класс Product реализовал оба класса [Review и Category], чтобы увеличить масштабируемость моего кода.Тем не менее, я застрял в этом.Я пытался использовать даже Mixins, но мне пришлось переназначить все методы из категории и обзора. Кто-нибудь знает лучшее и умное решение для этого?

interface Fetch {
    getInfo() :string;
}

class Review implements Fetch {

    getInfo(): string {
        return 'Nice Product'
    }

    getName(): string {
        return 'Shirt Star wars'
    }

    geRate(): string {
        return '5 stars'
    }
}

class Category implements Fetch {

    getInfo(): string {
        return 'Nice Category'
    }

    getCategory(): string {
        return 'Geek'
    }

    getSimilar(): string[] {
        return []
    }
}

class Product extends Review {
    constructor() {
        super();
    }
}

let Shirt = new Product()

Shirt.getInfo()
Shirt.geRate()

1 Ответ

0 голосов
/ 11 июня 2018

Вот пример того, что вы спросили:

interface Fetch {
    getInfo() :string;
}

interface ReviewInterface extends Fetch{

    getName(): string;

    getRate(): string;
}

interface CategoryInterface extends Fetch{


    getCategory(): string;

    getSimilar(): string[];
}

class Review implements ReviewInterface {

    getInfo(): string {
        return 'Nice Product'
    }

    getName(): string {
        return 'Shirt Star wars'
    }

    geRate(): string {
        return '5 stars'
    }
}

class Category implements CategoryInterface {

    getInfo(): string {
        return 'Nice Category'
    }

    getCategory(): string {
        return 'Geek'
    }

    getSimilar(): string[] {
        return []
    }
}

class Product implements ReviewInterface, CategoryInterface {
    constructor() {
        super();
    }

    // .... Here goes all implementations...
}

let Shirt = new Product()

Shirt.getInfo()
Shirt.geRate()
...