169 похожих чатов

Посоны, почему в данном случае не выводится ключ? https://www.typescriptlang.org/play/#code/C4TwDgpgBA0hIGcDyAzAPAFQDRQwBQCcB7MDcCAPigF4oBvKAbTygEsA7KAa3iJVwC6ALlzMBUCAA9gEdgBMEuQiTKQoAfigsR7CADcIBKAF9GPEH0EBuALAAoeygCu7AMbBWRTgHMIwAGoAhgA2ThAImBQAFEQARgBWIthQAHRp5ggicIiomDgIwAQc3hSMAgCU9PZQNVCuXghEwRApwUTeURkpALaBYFGSNFRx8YySFeW2dsb29hwyBCiBrtAAYkREVXa1UIE6Tt2xhlM7sSIFRezeJ7Wu54XFUzMOdq7BgQiKAMJergR+EAAShAwEQCAstjt-qDwTEEiJ1kRKnRqjtar4AiEwgg4fEcAByWL4gmufGTVE1Z7PexvD6KACCsQuy2AwJhC0wEmksgUUERVBR21q0LBwFxSWRFLRGKCoXCuIJRJJZJulPsxiAA

2 ответов

4 просмотра

Потому что T[P] - это string | number (то есть, не экстендит string). В результате - всегда кондишенал будет never type Test1<T extends Foo> = keyof T type Test2<T extends Foo> = T[Test1<T>] type Test3<T extends Foo> = T[Test1<T>] extends string ? Test1<T> : never let x: Test2<Foo> //string | number let y: Test3<Foo> // never

Да, так происходит, потому что, не имея конкретного типа T, TS не может вычислить условный тип в KeysOf и получить массив допустимых ключей (технически из условия T extends Foo можно получить, что ключи b и c всегда допустимы, но авторы TS ограничивают глубину анализа, чтобы вычисление типов оставалось относительно быстрым). В качестве решения, как уже писали, можно "встроить" базовый тип Foo в getValues: play.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
I just installed it but how do I use it?
Talula
12
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
Карта сайта