Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобраться, пожалуйста. Изучаю Typescript. Тема - Условные типы. Надо реализовать тип.

Арни Ученик (144), на голосовании 4 месяца назад
 // TODO: Реализуйте тип FilterByProperty
// Что я строчкой ниже написал не так, и как нужно было. Спасибо большое.
type FilterByProperty = T extends {[K in key ]?: any} ? T : never;


type Administrator = {
name: string;
}

type Security = {
name: string;
shift: 'day' | 'night';
}

type Developer = {
name: string;
computer: 'MacOS' | 'Windows';
}

type TestingEngineer = {
name: string;
computer: 'MacOS' | 'Windows';
}

type Personal = Administrator | Security | Developer | TestingEngineer;

type WithComputers = FilterByProperty;
// type WithComputers = Developer | TestingEngineer так должно быть в итоге, но у меня не выходит
Дополнен 5 месяцев назад
Условия такие:
Напишите тип FilterByProperty. Он принимает два дженерик-параметра:
тип объектов Obj — может быть объединением разных объектов;
тип ключа Key — строковый, не связанный с типом объекта.
Результатом должны быть те объекты из типа Obj, которые содержат ключи из типа Key.
Дополнен 5 месяцев назад
А это подсказка к заданию
Чтобы обозначить объект, содержащий все ключи типа Key, воспользуйтесь оператором in: { [K in Key]?: any }.
Если тип нужно исключить из результата, воспользуйтесь never.
Голосование за лучший ответ
Даниил Линник Знаток (472) 5 месяцев назад
спросил у своего друга сеньора
вот его ответ:
АрниУченик (144) 5 месяцев назад
Спасибо!
Похожие вопросы