TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Кодовая база

5 Jul, 14:40

Open in Telegram Share Report

Infer

Infer для многих конструкция поистине инфернальная. 

Infer объявляет переменную типа, в которую тип будет выведен позже. Чтобы понять, как работать с infer, нужно учесть, что он выводит тип исходя из соответствия шаблону. Поэтому в большинстве случаев нужно написать шаблон, куда вы подставите infer вместо интересующего вас типа.

Например, вы хотите вывести тип результата функции. Для примера возьмем функцию без аргументов, чтобы они нас не путали, они нам сейчас не нужны. Такой тип может быть описан вот так: () => number. Или так: () => { x: string }. Мы не знаем, что вернется из функции, и нас именно это как раз и интересует. Поэтому получается () => infer U (1️⃣). Вот этот U нам и нужен и как результат type alias (2️⃣). 

Далее наш шаблон, который мы получили на шаге 1️⃣, мы подставляем после extends, а в true кейс подставляем желаемый результат, который мы получили на шаге 2️⃣. Получается

type ReturnType = T extends () => infer R ? R : 

Надо что-то записать в false-кейс, это будет тип, который мы получаем, если параметр типа не будет соответствовать нашему условию. Нам не сильно интересен этот тип, нам интересны только те, которые соответствуют нашему условию. Поэтому здесь используем never. Итого получаем

type ReturnType = T extends () => infer R ? R : never;

#typescript

870 0 7 4 10
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot