Система типов полностью стирается во время выполнения, так что нет ничего, что MyInterface
осталось бы перебрать.Это по замыслу (см. Нецелевая цель TypeScript # 5).Таким образом, ответ на ваш вопрос: «Вы не можете этого сделать, извините».
Что вы можете сделать, это начать с чего-то, что определенно будет существовать во время выполнения, например
const myObject = {first: "1", second: "2"};
, а затем позвольте компилятору вывести тип для этого объекта и использовать этот тип для определения типов, которые вам нужны:
type MyType = typeof myObject;
interface MyInterface extends MyType {};
Приведенный выше MyInterface
точно такой же, как ваше первоначальное определение, но теперь у вас есть объект времени выполнения myObject
, который вам нужно перебрать:
// type assertion needed because Object.keys() returns string[] on purpose
const myInterfaceKeys = Object.keys(myObject) as Array<keyof MyInterface>;
Надеюсь, что вам это поможет.Удачи!