в типе "DataChatId".ts(2339)
ну у тебя прописано 1 тип или 2рой, наверняка есть только messageId выходит))
Но я же делаю через if проверку
if (‘username’ in params) {} попробуй)
Оо спасибо, помогло)
Ну почему TypeScript не понимает очевидных проверок. function generateLinkToPost (params: DataUsername): string function generateLinkToPost (params: DataChatId): string function generateLinkToPost (params: DataChatId | DataUsername): string { if (('username' in params) && params.username) return `${params.username}/${params.messageId}` return `${String(params.chatId).slice(4)}/${params.messageId}` } Теперь он жалуется, что chatId может быть undefined. Хотя как оно может быть undefined, если идёт проверка на username вначале + перегрузка функций, юзер обязан будет указать chatId, если не укажет username
Я подумал, что может быть в ней дело и попытался добавить её.
Cложные словечки :D
Хорошо, надеюсь пойму
А разве в этом коде не используется тайпгард? ( первая проверка if )
Ты проверяешь только наличие username, но не chatId
Я делаю проверку username и chatid, но теперь проблема в том, что TS просит "завершающий оператор return" Я могу конечно поставить в качестве завершающего типа пустую строку, но выглядит как костыль
Так не работает? function generateLinkToPost (params: DataChatId | DataUsername): string { if ('username' in params) return ${params.username}/${params.messageId} else return ${String(params.chatId).slice(4)}/${params.messageId} }
Нет, не работает к сожалению. Начинает жаловаться что chatId недоступен
Обсуждают сегодня