У меня есть заданный интерфейс из другого пакета, поэтому я не могу его изменить. Для простоты, давайте просто скажем следующий интерфейс:
interface SomeInterface {
someProp: string;
someOtherProp?: number;
}
Мне было интересно, могу ли я каким-то образом извлечь типы всех свойств, чтобы я мог получить комбинированный тип, который мог бы быть любым из свойств исходного интерфейса.
В этом примере он разрешается к типу string | number | undefined
.
Кроме того, на самом деле это не тот же вопрос, но довольно связанный с ним. Можно ли извлечь допустимые свойства имена вместо значений, поэтому в данном примере это будет тип, содержащий значения "someProp" | "someOtherProp"
.
. В первом случае я уже пытался тип SomeInterface[string]
, но я думаю, что он работает только тогда, когда для интерфейса определена подпись ключа / индекса, а не указаны c свойства.