Нашел одно решение:
type KeysOf<T1> = keyof T1;
class A<T2> {
fields: Array<KeysOf<T2>>;
Пожалуйста, обратите внимание, что эти два T разные, просто мое соглашение.
KeysOf
является универсальным по типу, который он описывает. Это позволяет мне позже передать T, с которым мой класс параметризован.
Обратите внимание, я должен был объявить этот псевдоним типа вне тела класса, так как Typescript отказался компилировать иначе.
Обратите внимание, type
поддерживает дженерики только из определенной версии языка машинописи, поэтому в старых версиях трюк может не работать.