Я по правилам нашим не могу обозначать их никакими буквами
\d(?!F)[A-Za-z]
Или вы предлагаете просто распилить весь интервал на M фиксированных кусоков?да, именно так. Я, собственно, и написал, что это будет хорошо работать не всегда. Если у объектов длинные интервалы, то в большинстве кейсов точка будет попадать на много объектов (количество, сравнимое со всем списком), и смысла что-то придумывать вообще нет.
примерно в 3 раза
для другого размера проектов.
<Card<Card key={card.keyId}
string & boolean == never
Объединение string | boolean, очевидно, не равно never.
TS по разному проверяет чтение и запись свойства.
Здесь неизвестно, какая строка в переменной key - 'a' или 'b'. Соответственно, в v1 попадет либо Т1, либо Т2. С другой стороны, присвоить в obj[key] можно только такое значение, которое одновременно является и Т1, и Т2 - чтобы в любом из двух возможных ключей соответствовало типизации.
Иными словами, в чтении имеем "ковариантность", а в записи - "контравариантность".