Не ожидал что при явном объявлении типов деструктурированных пропсов принимающий FC не подхватит их типы.
тип React.FC - это генерик. У него есть параметр, который по умолчанию {}. Указав React.FC, ты явно указал тип и оставил для него параметр по умолчанию. Теперь вывод типов для следующей за этим стрелочной функции (которая компонент) будет идти от этого самого React.FC, без каких либо дописываний в него.
Это всё простые примеры - линейная цепочка асинхронных действий. Попробуй, для разнообразия, переделать в промисы вариант, где await случается в условиях и/или в циклах, там чуток повеселее будет. Хотя тот же промисный чейнинг, но тем не менее.
любопытно, что это знакочередующиеся биномиальные коэффициенты для третьей степени.
т.е. если (n+3)^2 переставить влево, то будет полный комплект:
n^2 - 3 * (n+1)^2 + 3 * (n+2)^2 - (n+3)^2 = 0, для любого n
оказывается, это можно обобщить для коэффициентов степени больше 3,
например, n^2 - 4 * (n+1)^2 + 6 * (n+2)^2 - 4 * (n+3)^2 + (n+4)^2 = 0 , здесь набор коэффициентов для бинома 4 степени. И т.д. Доказать можно так:
Обозначим эту сумму как F(k, n) = sum(i = 0...k) ((-1)^i * C(k, i) * (n+i)^2)
для k=3 уже выяснили, что F(k, n) = 0
для k>3 можно заметить, что F(k+1, n) = F(k, n) - F(k, n+1), и далее по индукции.
WbICHA, да и при сбалансированных скобках не всё в порядке
type Test1 = ExtractTemplates<'Hello {{name}{x}}, how are?'>; // x
автору хорошо бы уточнить, какие могут быть кейсы и что делать в случае ошибок. Возможно, тут всё более хитро и потребуется делать нормальный честный конечный автомат
ага, понял вроде бы.. На каждый лист дерева здесь свой рекорд, со всеми 2^depth составными ключами, по которым к листу можно прийти. И потом в JoinKeys объединение рекордов.
WbICHA, я сначала ради интереса хотел сделать "по слоям", но что-то вчера не взошло. Щас глянул на свежую голову, вот так получилось. Это набросок, здесь нет обработки кортежей (только обычные объекты), допиливать, разумеется, лень :)
тип React.FC - это генерик. У него есть параметр, который по умолчанию {}. Указав React.FC, ты явно указал тип и оставил для него параметр по умолчанию. Теперь вывод типов для следующей за этим стрелочной функции (которая компонент) будет идти от этого самого React.FC, без каких либо дописываний в него.