T['key'] lookup'ит тип свойства так же, как obj['key'] — value; индекс сам type, поэтому можно index union (T['a' | 'b']) или keyof/number, не дублируя member types.
Indexing в type world. user.name → value, User['name'] → type. Unlock: в скобках не string руками — type. Index union → union back; index keyof T → всё; index array с number → element type. Один operator держит derived types привязанными к source.
Итог
T['key'] — lookup типа; union index и T[number] — DRY-derivation от модели.