string;
v2: boolean;
v3: string;
v4: string;
}
Как выбрать отсюда только строковые поля?
type S = StringOnly<obj>; // 'v1' | 'v4'
Можно например сделать несколько хелперов: type KVPair<K extends keyof any, V> = { K: K, V: V }; type ToKVPairs<T> = { [K in keyof T]: KVPair<K, T[K]> }[keyof T]; type FilterKVPairsByValue<P extends KVPair<keyof any, unknown>, U> = Extract<P, { V: U }>; type FilterKeysByValue<T, U> = FilterKVPairsByValue<ToKVPairs<T>, U>['K']; И тогда StringsOnly будет выглядеть так: type StringOnly<T> = FilterKeysByValue<T, string>;
Сложновато, но выглядит как решение проблемы, спасибо)
Эти хелперы могут много где пригодиться, так что их можно добавить в toolbelt.
Соглашусь, благодарю)
что такое toolbelt?
Модуль или npm-пакет со всякими хелперами.
Обсуждают сегодня