Рассказ про котенка тома

У этого термина существуют и другие значения, см. шамайка. шамайка также шамайка королева кошек повесть российского писателя юрия

У этого термина существуют и другие значения, см. Шамайка.

«Шама́йка» (также «Шамайка — Королева кошек») — повесть российского писателя Юрия Коваля о похождениях бродячей кошки. Впервые опубликована в 1988 году. Написана по мотивам повести Эрнеста Сетона-Томпсона «Королевская аналостанка» по предложению Ролана Быкова, предполагавшего снять художественный фильм по сценарию Коваля.

История создания[править | править код]

Сценарий художественного фильма по повести Э. Сетона-Томпсона «Королевская аналостанка» Юрию Ковалю предложил написать актёр и кинорежиссёр Ролан Быков. Замысел снять кинокартину так и не был осуществлён, однако результатом работы над сценарием стала повесть о бродячей кошке «Шамайка». Повесть была опубликована в 1988 году в двух номерах журнала «Пионер»[1], с предисловием Ролана Быкова и рисунками Рубена Варшамова. Повесть посвящена «господину Эрнесту Сетону-Томпсону и маэстро Ролану Быкову, живущим в разном времени и смысле».

Сам Быков отмечает в предисловии, обращаясь к читателю: «Пока вы будете читать «Шамайку» Юрия Коваля, я буду снимать по этой повести свой новый фильм, только может случиться, что в переводе на экран получится ещё одна, совершенно новая история»[2]. Быков продолжал работать над сценарием и после выхода повести: планируемым названием кинокартины было «Трущобная кошка» (что соответствует переводу оригинального названия у Сетона-Томпсона — The Slum Cat), причём на каком-то этапе фильм предполагалось снимать совместно с США[3]. Однако он так и не был снят.

В 1990 году в издательстве «Детская литература» вышло отдельное издание повести, с тем же предисловием и рисунками Варшамова. Позже книга переиздавалась, в том числе с новым предисловием Марины Москвиной.

Сюжет[править | править код]

У бездомной кошки, живущей в трущобах, рождается котёнок. Сама кошка, преследуемая бульдогом, прыгает на корабль и уплывает, а котёнок начинает самостоятельную жизнь. Он забирается в зоомагазин «японца» Мали (который не является японцем, но постоянно щурится), где также работают негр Джим и сожительница японца Лиззи. Недовольная тем, что Мали и Джим приютили котёнка, Лиззи выбрасывает его во двор скобяного склада, где котёнка начинает защищать могучий бык Брэдбери. По прошествии времени котёнок подрастает и оказывается симпатичной кошечкой, к которой начинает испытывать интерес местный бродячий кот Рваное Ухо. Негр Джим, случайно увидевший кошку на улице, называет её Шамайкой. Между тем владелец склада господин У-туулин решает продать быка, и того погружают на баржу, которая отплывает. Шамайка остаётся без защитника. Вскоре у неё рождаются котята от Рваного Уха. Господин У-туулин расстреливает всех котят из винтовки, но Шамайку и прибившегося к ней кролика забирает в лавку японца негр Джим.

Обнаружив, что у Шамайки прекрасный мех, Мали решает разводить кошек на мех и продавать. Он нанимает человека, который ловит ему бродячих кошек, и вместе с Джимом сажает кошек в клетки и кормит их карасьим жмыхом. Однако Лиззи не нравятся новые расходы, и того же человека нанимают, чтобы он забил кошек колотушкой. Шамайка при этом убегает, на улице попадает к живодёрам, чудом спасается от них и возвращается в лавку Мали. Тогда японец посылает кошку на выставку господина Никербокера, назвав её представительницей редкой породы «Королевская аналостанка» с острова Борнео и выдавая Джима за приставленного к кошке дворецкого, а Лиззи — за кошачью экономку. Красота Шамайки производит фурор на выставке, и её покупает за крупную сумму графиня Блонская. Шамайка сбегает, но Мали за вознаграждение возвращает её Блонской, и та увозит кошку на загородную виллу. Там сын графини Виктор издевается над Шамайкой, которая убегает с виллы и через несколько месяцев путешествия возвращается в родимые трущобы. Но трущоб больше не существует: старые дома снесены, и на их месте строятся небоскрёбы. Шамайка встречает Мали, и они вдвоём отправляются на поиски новой жизни. «Попробуем тебя ещё разочек продать», — говорит Мали.

Отзывы[править | править код]

Исследовательница творчества Коваля Светлана Веднёва называет «Шамайку» «самой драматичной, щемяще-грустной из всех книг», а центральным мотивом произведения — «мотив вечного бега-странствия, но не бега-разрыва, а бега — возвращения к другу»[4]. Она отмечает также парадоксальность основных образов-символов повести: трущобы символизируют «бездомность, разобщённость, одиночество», но для Шамайки, напротив, являются домом, тогда как роскошный дом графини Блонской больше похож на тюрьму. Пристань служит символом как расставания (с матерью и быком Брэдбери), так и встречи (с Мали в конце повести), а противостояние «мира романтиков и мира собственников» реализуется в повторяющейся ситуации купли-продажи[5]. В результате «вечная кошка, бегущая в старом времени» становится «символом победы беззащитного существа над враждебным окружающим миром, символом преодоления одиночества»[6].

Сравнивая оригинальную повесть Сетона-Томпсона и повесть Коваля, Ролан Быков проводит параллель с «Доктором Дулитлом» Лофтинга и написанным на его основе «Доктором Айболитом» Чуковского. Быков отмечает также, что Коваль, как и Сетон-Томпсон, «пишет о животных, но делает это совершенно по-своему»: «если для Сетона-Томпсона очень важен сам факт, то для Коваля факт — только начало, а дальше начинается самое главное. Там, где Коваль шутит, — он грустит; там, где грустит, — он любит; там, где любит, — он защищает»[7].

Аналогично Марина Москвина говорит о том, что Коваль — поклонник Сетона-Томпсона, посвятивший ему эту повесть, — «рассказал о Шамайке то, о чём умолчал его канадский предшественник»: поведал о жизни трущоб и характерах их обитателей, наполнив повесть «колоритными личностями» вроде негра Джима, быка Брэдбери и кота Рваное Ухо[8].

Литература[править | править код]

  • Быков Р. Красная книга Юрия Коваля (совершенно личное письмо читателю) (рус.) // Пионер. — 1988. — № 8. — С. 28.
  • Быков Р. Красная книга Юрия Коваля (совершенно личное письмо читателю) (рус.) // Ю. И. Коваль. Шамайка. — М.: Детская литература, 1990. — С. 3—4.
  • Быков Р. Я побит — начну сначала!. — М.: Астрель, АСТ, Редакция Елены Шубиной, 2010. — 752 с. — ISBN 978-5-17-066287-6. — ISBN 978-5-271-27396-4.
  • Веднёва С. А. Жанрово-стилевые особенности повести Ю. Коваля «Шамайка» (рус.) // Материалы XX научно-методической конференции преподавателей Южно-Сахалинского государственного педагогического института. — 1995. — Т. II. — С. 40—42.
  • Веднёва С. А. Слово Юрия Коваля. — Южно-Сахалинск: Сахалинское книжное издательство, 2007. — 240 с.
  • Москвина М. Красная книга Юрия Коваля (совершенно личное письмо читателю) (рус.) // Ю. И. Коваль. Шамайка. — М.: Детская литература, 2006. — С. 5—10.

Примечания[править | править код]

  1. Пионер. — 1988. — № 8. — С. 29—40; № 9. — С. 42—52.
  2. Быков, 1990.
  3. Быков (дневники), 2010, с. 569, 578, 607, 616, 654.
  4. Веднёва, 2007, с. 168.
  5. Веднёва, 2007, с. 169.
  6. Веднёва, 2007, с. 170.
  7. Быков, 1990, с. 4.
  8. Москвина, 2006.

Ссылки[править | править код]

  • «Шамайка» на сайте «Лаборатория Фантастики»
  • Обзор в видеоблоге Дмитрия Гасина

Его звали Тома Хикс. И вырос он на улице. Куда его выбросил отец-пьяница, когда умерла жена. Ребёнок мешал ему пить и гулять. Вот и оказался Тома вместе с собаками и котами на мусорке. Говорить он учился у прохожих и проституток, которые как могли поддерживали его. Они от скудных заработков своих отрывали гроши и кормили и одевали малыша.

Так он и вырос. Мусорный мальчик. Постоять за себя он учился у котов и собак. Точно также рычал, бросался вперёд и рвал до конца. Это и стало его работой. Знаете, дамы и господа, что такое уличные бои? Это когда на подземную стоянку съезжаются машины состоятельных людей и образовывают круг. А хозяева делают ставки на бойцов, работающих голыми кулаками.

Там Тома и получил кличку — Зверь. Он не знал жалости, сострадания и никогда не мог вовремя остановиться. За что его и ценили. Особая жестокость. За это и платили большие деньги любители уличных боёв.

А потом его заметил один из менеджеров ММА, и он стал выступать на ринге, но старая кличка и там к нему прилипла. Зверь стал известен тем, что был совершенно неудержим и абсолютно безжалостен. Он рычал, шипел и выл, как и те, кто учил его защищаться — собаки и кошки.

Его обожали, и болельщики, узнав, что будет выступать Зверь, платили за билеты любые деньги, вот только…

Менеджеры были недовольны. Они объясняли Томе, что бой нельзя заканчивать за тридцать секунд. Это же театр, и люди приходят посидеть и поболеть. И нельзя уничтожать противника за полминуты. Надо тянуть. Но Тома Хикс смотрел на них своим взглядом бультерьера на взлёте и показывал зубы.

Менеджеры вздыхали и отступали. Что поделаешь? Любимец и победитель. А таким всё прощают.

Была у Томы и странная привязанность. Он давно уже стал состоятельным человеком и купил пентхаус, именно в той высотке, перед которой когда-то ползал с котами и собаками на мусорке. У него был счет в банке. И в этом банке была одна служащая по работе с клиентами. Вот именно к ней и ходил Тома.

Вроде бы, по делу, а на самом деле, он хотел пригласить её на свидание. Он садился напротив и смотрел на неё глазами бультерьера, налитыми кровью и злобой. От чего той было так страшно, что немедленно хотелось в туалет.

Короче говоря, она его боялась до чертиков, как, впрочем, и все остальные, с кем Тома общался. Поэтому, как вы понимаете, дамы и господа, из банка Тома выходил совершенно расстроенным, а это сказывалось на его боях.

Он просто зверел. И его противники сыпались на пол с серьёзными повреждениями.

Тома однажды спросил одного из менеджеров, в чем проблема, и тот осторожно попытался объяснить:

— Тома, я тебе скажу. Но ты только не бей меня. Ладно?
— Ладно, — согласился Тома Хикс.
— Слушай, — сказал менеджер. — Ты снаружи вроде ничего… — и, посмотрев на его изувеченное лицо, добавил: — местами. А вот душа…
Душа у тебя уродливая. Злобная и грубая. А женщины это видят. Они видят это и сторонятся тебя. Никто не хочет, чтобы с ним разговаривали так, как ты говоришь. И никто не хочет, чтобы на него смотрели глазами, налитыми кровью, ненавистью и злобой.
Понимаешь?
— Кажется, понимаю, — ответил Тома и ушел.

А на мусорке теперь жил котёнок. Уродец — так его называли жители домов, выносивших мусор. Одно его ухо было короче второго. Передняя левая лапка была сломана и срослась криво, а хвост… Ну, хвоста просто не было. От него остался коротенький обрубочек. Совсем коротенький.

Выносившие мусор и отдававшие отходы собакам и котам, обычно отпихивали его ногами. Он был им неприятен. Словно напоминал что-то давно забытое и тщательно скрываемое. Словно он был их отражением. Внутренним отражением их настоящего — я.

— Пшёл вон! — кричали они и отпихивали его в сторону.
Котенок тихонько плакал и ждал своей очереди, чтобы доесть остатки за всеми нормальными котами и собаками, а те…

Те, как ни странно, не трогали малыша. Даже иногда пододвигались, давая ему место рядом. Животные, дамы и господа, зачастую лучше людей. Зачастую.

Так оно и шло, пока однажды Тома Хикс не возвращался после очередного боя, разгоряченный и злой. И увидел…

Как трое молодых отморозков издевались над маленьким уродливым котёнком, толкая его ногами друг другу и смеясь. И жизни-то малышу оставалось секунд тридцать.

Тридцать. Если бы не Тома. Он вышел из машины и в несколько секунд раскидал мерзкую троицу. А когда все они валялись на земле и стонали от боли, он наклонился.

Тома Хикс наклонился и совершенно спокойно, даже не задохнувшись, посмотрел на них своим знаменитым взглядом. Взглядом бультерьера на взлёте, и, улыбнувшись страшной улыбкой, сказал:

— Если хоть кто-то пикнет о том, что тут произошло, то я… Я найду вас и… все кончится плохо, очень плохо.
Потом он оскалился и добавил:

— Для вас…
И поэтому, когда троих парней, попавших в больницу, опрашивала полиция, они молчали — как рыба об лёд. Они очень хорошо знали Тому. Они знали, что тот держит своё слово. Поэтому в полиции было записано — нападение нескольких неизвестных.

Тома назвал малыша Уродец. Собственно говоря, как его все и называли. Он прочел в интернете, что надо купить, и заказал в магазине всё самое лучшее. И ему привезли. Всё.

А малыш оказался очень сообразителен и быстро понял, что к чему. Научился пользоваться туалетиком, электропоилкой и кормушкой, а через неделю…

Через неделю Тома первый раз проиграл. Нет. Никто не сбил его с ног. И никто не отправил в нокаут, но…

Против него вышел боец по кличке Бык. Он был, как каменная стена, и кулаки Томы просто отскакивали от его тела, привыкшего к ударам. Кроме того, Бык был слабо чувствителен к боли. Он зажал Тому возле сетки и долго бил, пока рефери не остановил бой.

Бык выиграл по очкам. Так решили судьи. И правильно решили, кстати. И Тома Хикс приехал домой в ужасном настроении. Это был первый проигрыш. Он сел на диван и включил огромный телевизор напротив. Он включил его и даже смотрел в экран. Смотрел, но ничего не видел, и тогда…

Тогда Уродец забрался к нему на колени и, поднявшись на задние лапки, стал тереться своей мордочкой о его щёки.

Тома, не привыкший к ласкам и вниманию, не понимал, что тот делает и зачем.

— Ну, ты что? — спрашивал он котёнка. — Зачем ты это делаешь? Что это? Зачем? Зачем?
И Тома провёл ладонью правой руки по щекам. Он посмотрел на ладонь и увидел, что она была влажная. Он плакал последний раз много лет назад, когда отец оставил его возле мусорки, напутствовав словами:

— Ничего. Выживешь как-нибудь.
Тома Хикс плакал, не осознавая этого. По его небритым щекам текли слёзы, а маленький котёнок по имени Уродец, стоя на задних лапках, вытирал их своей мордочкой и тихонько мурлыкал.

Тома всхлипнул и, вытерев слёзы, сказал:

— Если кто ещё раз назовёт тебя уродцем, скажи мне. Ты теперь Красавец. Самый что ни на есть Красавец просто невозможный. Понял?
И котёнок кивнул Томе и согласно мяукнул.

На следующий день Тома пошел к менеджеру и потребовал повторного боя с Быком, через неделю. Менеджер с сомнением посмотрел на Тому, но возражать не стал. И вскоре город заполнили афиши

«ЗВЕРЬ против БЫКА! Бой века!!!»

Билеты разлетались, как горячие пирожки и за любую цену.

Тома вышел в центр клетки. Он больше не рычал и не шипел, не плевался и не показывал когти. Он совершенно спокойно стоял и смотрел, как тысячи болельщиков, которые раньше приветствовали его, кричали и радовались при виде Быка.

Тот вышел в круг и принял свою стойку. Порыл землю копытом, как и полагается быку. Заревел и наклонил свою голову-таран. Он приготовился смести и растоптать наглеца, посмевшего повторно бросить ему вызов.

А потом…

Потом он рванул в сторону Томы со скоростью феррари, надеясь опять прижать того к сетке и добить там. Тома спокойно сделал шаг в сторону и всем телом, будто молотом, двинул. Выбросил вперёд правую руку. Точно в середину железного лба Быка.

После чего, не оборачиваясь, пошел в сторону закрытых на замок ворот и потребовал открыть их. Зал безмолвствовал. Никто ничего не понимал. Люди застыли с открытыми ртами.

Ничего не понял и Бык. Он просто постоял пару секунд, а потом рухнул, как подкошенный. Со страшным грохотом. Словно на пол упал большой шкаф с книгами.

Тома уже шел за сеткой, когда весь зал вскочил на ноги и издал такой рёв восторга, что стёкла задрожали. Люди бесновались. Они прыгали и кричали во всё горло:

— Тома! Тома! Тома! Зверь! Зверь! Зверь!
Но Тома Хикс даже не обернулся. У него было ещё одно очень неотложное дело. И победа над каким-то Быком была ничто по сравнению с этим.

Галстук ему завязывали два менеджера, которые тоже не очень разбирались в этом, и вообще. Они злились. Они хотели, чтобы Тома-Зверь вернулся в зал и принимал поздравления. А он вместо этого в какой-то банк собрался…

Тома пришел в костюме, сидевшем на нём, как на корове седло и в галстуке, завязанном, как верёвка на… той же корове.

Девушка, к которой он ходил всегда, больше не боялась его. Она улыбалась, так смешно Тома Хикс, по кличке Зверь, выглядел в своём непривычном наряде.

Он сел напротив неё, когда подошла его очередь и, положив на стол фото, сказал:

— Вот. Это мой единственный друг. Он очень важен для меня. И я хотел бы познакомить вас с ним. К тому же, может вы подскажете мне, что мне делать с его ухом и лапой.
Совершенно заинтригованная девушка взяла фото, надеясь увидеть там ещё одного бойца ММА, и не понимая, чем она может помочь, но…

Но с фотографии на неё смотрел малюсенький смешной котёнок, с одним ухом короче другого и левой передней лапкой, явно неправильно сросшейся.

Она не смогла сдержать улыбки, а Тома…

Он покраснел первый раз в жизни и тоже улыбнулся. И его грубое, покрытое шрамами лицо расплылось в такую смешную и милую гримасу, что девушка не сдержалась и засмеялась. Тома смутился ещё больше.

— Я заканчиваю работу после пяти, — сказала она. — И мы с вами возьмём вашего друга и поедем к моему знакомому ветеринару. Ведь у меня дома тоже живут кошки. Целых три.
Котёнок по кличке Самый Что Ни На Есть Красавец держался тремя лапами за Тома и девушку.

Во-первых, Тома был его рОдным папочкой, который долго его искал и нашел. И теперь котёнок должен был за ним присматривать, а девушка…

Она просто нравилась ему. Но вот мужик в белом халате не внушал ему доверия. Как раз, наоборот. Он был очень подозрителен. Мало ли что можно ожидать от человека в белом халате, рассматривающем его поломанную лапку?

Доктор предложил ещё раз сломать эту лапу и, сложив правильно косточки, наложить гипс. Услышав такое, Тома прижал к себе малыша и, внезапно побледнев как простыня, попытался потерять сознание. Он стал сползать по стене, и доктор с девушкой с большим трудом усадили его на стул и потом давали нюхать что-то и поили успокоительным.

А после они поехали домой к Томе Хиксу, и там девушка наводила порядок, а котёнок по имени Невозможный Красавец ходил за ней по пятам и тёрся головой об её ноги.

А потом они поехали к ней домой, и она познакомила Тому со своими кошками, которые, как ни странно, приняли его хорошо, потому что он сидел на стуле и разговаривал с ними, как с людьми, а потом…

А потом всё было так.

Тома Хикс, по кличке Зверь, больше не выступает бойцом ММА. У них с женой большой ресторан в центре города. Очень хороший ресторан и широко известный. Тома оказался очень хорошим поваром, совершенно неистощимым на выдумки. И народ валит к нему валом просто. Столик надо заказывать за неделю.

Нанятые два повара сердятся и говорят, что никто так не готовит, но потом соглашаются, и в меню ресторана появляется ещё одно блюдо совершенно неизвестное в других местах, но очень хорошо известное Томе Хиксу. Из его голодного детства. И именно то, о котором он мечтал голодными и холодными длинными ночами, ночуя под мостом вместе с бомжами.

А дома у них теперь четыре кота-кошки. И, разумеется, они дерутся, деля огромный пентхаус. Потом мирятся. И спят вместе, а потом опять дерутся. Весело, короче говоря.

Совершенно Невозможный Красавец, некогда бывший Уродцем, превратился в огромного откормленного котищу, который считает себя самым главным в доме.

Да. И на счет уродливой души Томы Хикса… Не помню кто это сказал, но…

Но он был неправ. Видели бы вы, как Тома носит на руках свою жену и разговаривает с персоналом своего ресторана. Они, например, считают, что Тома Хикс, по кличке Зверь (про что они не знают) — мямля и слишком добрый дядька, который всем всё прощает. А настоящий Зверь — его жена.

И, кстати. Дамы и господа, если вам доведётся побывать в ресторане Томы. Который так и называется — «Моя душа», то…

Не вздумайте там напиться, буянить и приставать к официанткам. Тома не держит вышибал. Он сам справляется с этим вопросом.

О чем этот рассказ? А, пожалуй, вот о чем.

Душевное уродство — в тысячу раз хуже уродства внешнего. А любое внешнее, может превратиться в красоту невозможную. Потому как, душевно красивый человек и видит именно так всё окружающее. И иногда душевные раны запросто может залечить малюсенький котёнок по имени Уродец.

Прошу прощения — Невозможный Красавец.

А так, в общем, всё. Это и есть вся история О Томе Хиксе, его котёнке и девушке из банка.

И дай вам Бог здоровья. Честное слово!

Недавно я, используя React Native, занимался разработкой мобильного приложения для медитации Atomic Meditation. Эта программа помогает тем, кто ей пользуется, выработать привычку медитировать, ежедневно уделяя этому занятию какое-то время. В ходе работы у меня появились серьёзные причины приступить к изучению TypeScript и начать пользоваться им вместо JavaScript в проектах среднего и крупного размера.

Прежде чем я начну свой рассказ, мне хотелось бы отметить, что вы сможете разобраться в этой статье, даже если никогда не пользовались React Native. Я буду всё подробно объяснять. А если вы делали какие-нибудь проекты на React, то, читая эту статью, можете считать, что React и React Native — это одно и то же.

А теперь расскажу о том, как обычный JavaScript втянул меня в неприятности.

День 1: всё идёт как надо

В React Native есть объект AsyncStorage, который представляет собой хранилище данных типа ключ/значение с асинхронным доступом к значениям по ключам. Он даёт разработчику очень простой механизм для организации постоянного хранения данных на мобильном устройстве пользователя.

Например, воспользоваться им можно так:

AsyncStorage.setItem("@key", value)

AsyncStorage позволяет хранить лишь строковые данные. Поэтому для того чтобы поместить в это хранилище число — это число сначала надо конвертировать в строку.

Ниже показано применение React-хука useState для объявления переменной sessionCount и для установки её начального значения в 0. Тут же имеется и функция setSessionCount, которая позволяет менять состояние sessionCount:

const [sessionCount, setSessionCount] = useState(0)

Предположим, пользователь завершил сеанс медитации (я, напомню, занимался разработкой приложения для медитации). В sessionCount хранится общее количество сеансов медитации, завершённых пользователем (я буду теперь называть этого пользователя «Anxious Andy» — «беспокойный Энди»). Это значит, что нам надо прибавить 1 к значению, хранящемуся в sessionCount. Для этого вызывается функция setSessionCount, в которой и выполняется прибавление 1 к предыдущему значению sessionCount. А потом количество завершённых медитаций нужно сохранить в AsyncStorage в виде строки.

Всё это надо сделать в некоей функции, которую я предлагаю назвать saveData:

// Пользователь завершил сеанс медитации…
const saveData = () => {
  setSessionCount(prev => {
    const newSessionCount = prev + 1

    AsyncStorage.setItem("@my_number", newSessionCount.toString())

    return newSessionCount
  })
}

Всё идёт хорошо, наш Энди, теперь уже не такой беспокойный, тихо закроет приложение, испытывая прилив хорошего самочувствия.

День 2: затишье перед бурей

Беспокойный Энди получает уведомление, которое напоминает ему о том, что через 5 минут начинается его медитация. Но он не только беспокойный, но ещё и нетерпеливый. Поэтому он тут же идёт к себе в комнату, находит своё рабочее кресло, удобно (но при этом — сохраняя ясное сознание) в него садится и открывает программу.

Теперь, когда программа загружается, данные сессии Энди нужно прочитать из хранилища. В React хук useEffect позволяет выполнять функцию-коллбэк при монтировании компонента.

В коллбэке мы асинхронно получаем данные из хранилища, а после этого вызываем функцию setSessionCount(), передавая ей эти данные, то есть — «1»:

useEffect(() => {
  AsyncStorage.getItem("@my_number").then(data => setSessionCount(data))
}, [])

Беспокойный Энди успешно справляется с ещё одной медитацией. Поэтому к sessionCount надо добавить 1, что позволит сохранить общее число завершённых сеансов медитации.

Новое значение, как и прежде, мы записываем в хранилище:

// Пользователь завершил сеанс медитации…
const saveData = () => {
  setSessionCount(prev => {
    const newSessionCount = prev + 1

    AsyncStorage.setItem("@my_number", newSessionCount.toString())

    return newSessionCount
  })
}

К настоящему моменту пользователь завершил 2 сеанса медитации.

День 3: буря

Энди, теперь — уже вовсе не беспокойный, достаёт телефон и открывает приложение для того чтобы в третий раз подряд устроить сеанс медитации (и дела у него идут хорошо).

Он хочет узнать о том, как далеко продвинулся в деле выработки полезной привычки. Поэтому он открывает экран статистики. «О, да тут много всего интересного», — приговаривает он. «Отличная программа!».

Но его любовь к этой программе быстро сходит на нет…

Программа сообщает ему о том, что он провёл 11 сеансов медитации. А он-то медитировал всего два раза!

fc46655aed025d9e13da0c9de0523d95

Неправильная статистика по сеансам медитации

Что пошло не так?

В первый день мы записали в sessionCount начальное значение — число 0.

Пользователь завершил сеанс медитации — поэтому мы добавили к sessionCount 1. Затем мы преобразовали то, что получилось, в строку — в «1», после чего записали это в асинхронное хранилище (вспомните — оно может хранить только строковые данные).

Во второй день мы загружаем данные из хранилища и записываем в sessionCount загруженное значение. То есть — «1» (строку, а не число).

Пользователь завершает сеанс медитации и мы прибавляем к sessionCount 1. А в JavaScript «1» + 1 равняется «11», а не 2.

Мы забыли преобразовать строковые данные, считанные из хранилища, в число.

А хуже всего тут то, что наша программа при этом не выдала никаких сообщений об ошибках. Эта ошибка какое-то время оставалась незамеченной, а позже довела нас до неприятностей. Поиск источников подобных проблем может оказаться не таким уж и простым делом.

JavaScript позволил нам свободно, не сознавая того, что мы делаем, поменять в ходе выполнения программы тип данных, хранящихся в переменной.

Решить эту и другие подобные проблемы можно с помощью TypeScript.

Что такое TypeScript?

Если вы не знакомы с TypeScript, то знайте, что это, в сущности, то же самое, что и JavaScript, но оснащённое некоторыми полезными возможностями. В частности, переменные не могут менять типы. А если это случится — TypeScript выдаст сообщение об ошибке.

Браузеры не могут выполнять TypeScript-код. Поэтому TypeScript-файлы проекта надо транспилировать в JavaScript. На выходе получится несколько JavaScript-файлов (или один большой «бандл» с JS-кодом проекта).

Использование TypeScript в React Native-проектах

Добавить поддержку TypeScript в существующий React Native-проект очень просто. А именно, надо будет кое-что установить из npm и сделать пару настроек.

Теперь нужно будет лишь переименовать файлы с кодом, например — App.js в App.tsx, после чего заработает автоматическая система контроля типов.

После того, как изменено расширение файла, TypeScript разразится гневной тирадой о том, что аргумент типа 'string | null' нельзя назначить параметру типа 'SetStateAction<number>'.

3c2ec811a61c1d925cf91f0f3350f828

TypeScript предупреждает разработчика о том, что с типами данных что-то не так

Это значит, что мне тут, чтобы избавиться от сообщения об ошибке, надо, во-первых, проверить data на null, а во-вторых — преобразовать из строки в число (воспользовавшись parseInt()):

useEffect(() => {
  AsyncStorage.getItem("@my_number").then(data => {
    if (data) {
      setSessionCount(parseInt(data))
    }
  })
}, [])

Использование TypeScript подталкивает разработчика к написанию более качественного и надёжного кода. Это просто замечательно!

По каким материалам изучать TypeScript?

Я изучал TypeScript по этому видеокурсу канала Net Ninja. И если бы мне надо было бы что-нибудь изучить, то я в первую очередь поинтересовался бы тем, нет ли на этом канале курса по тому, что мне нужно.

Кроме того, официальная документация по TypeScript очень даже хороша.

Итоги

Теперь, благодаря TypeScript, я могу спать немного спокойнее, зная о том, что переменные в моём проекте не могут совершенно неожиданно менять свои типы. Спасибо за это TypeScript.

Да, не могу не отметить, что JavaScript хорошо подходит для маленьких проектов. Но при работе над средними и большими проектами, а так же — над маленькими проектами, которые вполне могут вырасти, лучше, пожалуй, прибегнуть к TypeScript, даже если для этого придётся потратить время на его изучение. А если вы знаете JavaScript, то и TypeScript освоите без особого труда.

Используете ли вы TypeScript в своих React-проектах?

tyb7fdkkt98xbfhc jlqbuybdda
oug5kh6sjydt9llengsiebnp40w

  • Рассказ про котенка гав
  • Рассказ про кошку мусю
  • Рассказ про кошку на немецком 4 класс
  • Рассказ про кошку для детей
  • Рассказ про королевскую семью на английском