Шаблон интерфейса в машинописном тексте - PullRequest
0 голосов
/ 05 августа 2020

Я читал некоторый код, и один из повторяющихся шаблонов выглядит следующим образом:

export interface IA {
    readonly IB: IB
}

export interface IB extends IA {
    name: string;
    dislayName: string;
}

Какое преимущество иметь интерфейс с одним свойством интерфейса только для чтения, а затем иметь другой интерфейс, расширяющий его? Это обычный шаблон дизайна? Также имеется ссылка на круговой тип. Почему это не вызывает ошибку?

1 Ответ

0 голосов
/ 05 августа 2020

вы можете смоделировать что-то, где вы даете информацию, например. о родительской иерархии.

const bla: IA = {
    name: '1st level',
    displayName: '1st',
    IB: {
        name: '2nd level',
        displayName: '2nd',
        IB: {
            name: '3rd level',
            displayName: '3rd',
            IB: {
                ...
            }
        }
    }
}

Но это НЕ соответствует типичному сценарию, поскольку IB всегда нужно определять (до бесконечности), поэтому вы не можете определить его самостоятельно, если не укажете машинописному тексту игнорировать его. Я подозреваю, что это типизация какого-то ответа от сервера, где неизвестно, насколько глубокой будет структура.

Думаю, должен быть правильный интерфейс (если я правильно понимаю)

export interface IB extends Partial<IA> {
    name: string;
    dislayName: string;
}

это позволило бы глубоко вложить информацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...