#typescript #types
#typescript #типы
Вопрос:
Это рекурсивное определение типа принимается компилятором Typescript.
type Recursive<T> = T amp; { prop: Recursive<T> };
Я могу определить столько свойств, сколько захочу, и он будет скомпилирован, но если мне нужно, чтобы все возможные свойства строки были рекурсивно определены, он не будет скомпилирован.
type Recursive<T> = T amp; { [prop: string]: Recursive<T> };
Почему это происходит? Возможно ли переписать второе определение, чтобы оно работало?
Комментарии:
1. В качестве обходного пути вы можете использовать
type Recursive<T> = T amp; RecursiveIndex<T>; interface RecursiveIndex<T> { [prop: string]: Recursive<T>; }
. Не могли бы вы добавить какой-нибудь пример, как бы вы его использовали и чего вы пытаетесь достичь?2. Другой обходной путь:
type Recursive<T> = T amp; { [prop in string]: Recursive<T> };
. Это соответствует точно вашему предполагаемому определению без ошибок, но я не знаю, почему возникает ошибка, когда вы делаете это по-своему. Мой поиск по проблемам с GitHub ничего не нашел, поэтому вы можете рассматривать подачу как ошибку. Однако это помогает создать убедительный вариант использования, поэтому вы можете поговорить об этом подробнее здесь или в GitHub, если откроете проблему. Удачи!