{"id":103784,"date":"2025-03-30T07:01:59","date_gmt":"2025-03-30T02:31:59","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/"},"modified":"2025-03-30T07:01:59","modified_gmt":"2025-03-30T02:31:59","slug":"type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/","title":{"rendered":"\u0634\u06a9 \u0648 \u062a\u0631\u062f\u06cc\u062f \u0646\u0648\u0639: \u0686\u06af\u0648\u0646\u0647 \u06cc\u06a9 \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u062c\u062f\u062f TypeScript \u062d\u0642\u06cc\u0642\u062a \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0648\u0631\u0628\u0648 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f"},"content":{"rendered":"<div data-article-id=\"2365282\" id=\"article-body\">\n<p>\u062f\u0631 \u0633\u067e\u062a\u0627\u0645\u0628\u0631 \u0633\u0627\u0644 2023 \u060c \u062f\u06cc\u0648\u06cc\u062f \u0647\u06cc\u0646\u0645\u06cc\u06cc\u0631 \u0647\u0627\u0646\u0633\u0648\u0646 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0631\u062f \u06a9\u0647 &#8220;\u062a\u0648\u0631\u0628\u0648 8 \u062f\u0631 \u062d\u0627\u0644 \u0631\u0647\u0627 \u06a9\u0631\u062f\u0646 TypeScript \u0627\u0633\u062a.&#8221; \u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u062f\u0631 \u062c\u0627\u0645\u0639\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0634\u0627\u06cc\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u067e\u0648\u06cc\u0627 \u0628\u062d\u062b \u0648 \u06af\u0641\u062a\u06af\u0648 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0648\u0631\u0628\u0648 \u06cc\u06a9 \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0648\u0631\u062f\u06cc \u0627\u06cc\u062f\u0647 \u0622\u0644 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0632\u06cc\u0631\u0627 \u0642\u0628\u0644\u0627\u064b \u0642\u0628\u0644 \u0627\u0632 \u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u060c \u06cc\u06a9 \u0645\u0647\u0627\u062c\u0631\u062a \u06a9\u0627\u0645\u0644 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 \u0646\u0633\u062e\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0627\u062f. \u0627\u06cc\u0646 \u062a\u0628\u062f\u06cc\u0644 \u0642\u0628\u0644\u06cc \u0635\u0631\u0641\u0627\u064b \u0633\u0637\u062d\u06cc \u0646\u0628\u0648\u062f \u061b \u0627\u06cc\u0646 \u0634\u0627\u0645\u0644 \u0627\u0635\u0644\u0627\u062d \u0645\u062c\u062f\u062f \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u062f\u0631 \u06a9\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0634\u0648\u0627\u0647\u062f \u062a\u062c\u0631\u0628\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u062b\u0631\u0628\u062e\u0634\u06cc TypeScript \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0648\u0631\u0628\u0648 \u060c \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f \u062a\u0648\u0631\u0628\u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 TypeScript (github.com\/shiftyp\/ts-turbo) \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D9%85%D8%B7%D8%A7%D9%84%D8%A8\" >\u0645\u0637\u0627\u0644\u0628<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%B2%D9%85%DB%8C%D9%86%D9%87_%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DB%8C_Typescript_%D8%AF%D8%B1_%D8%AA%D9%88%D8%B1%D8%A8%D9%88\" >\u0632\u0645\u06cc\u0646\u0647 \u062a\u0627\u0631\u06cc\u062e\u06cc Typescript \u062f\u0631 \u062a\u0648\u0631\u0628\u0648<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%AF%D8%B1_%D9%88%D8%A7%D9%82%D8%B9_%DA%86%D9%87_TypeScript_%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\" >\u062f\u0631 \u0648\u0627\u0642\u0639 \u0686\u0647 TypeScript \u062b\u0627\u0628\u062a \u0634\u062f\u0647 \u0627\u0633\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D9%85%D9%86%D8%A7%D8%A8%D8%B9_%D8%AA%D9%87%DB%8C\" >\u0645\u0646\u0627\u0628\u0639 \u062a\u0647\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D9%86%D8%A7%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C_%D9%87%D8%A7%DB%8C_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%B1%D8%A7%D8%A8%D8%B7\" >\u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0647\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0631\u0627\u0628\u0637<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%A7%D8%AC%D8%A8%D8%A7%D8%B1_%D9%86%D9%88%D8%B9_%DA%AF%DB%8C%D8%AC_%DA%A9%D9%86%D9%86%D8%AF%D9%87\" >\u0627\u062c\u0628\u0627\u0631 \u0646\u0648\u0639 \u06af\u06cc\u062c \u06a9\u0646\u0646\u062f\u0647<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%DA%86%D9%87_TypeScript_%D9%86%D9%85%DB%8C_%D8%AA%D9%88%D8%A7%D9%86%D8%AF_%D8%A8%D8%B1%D8%B7%D8%B1%D9%81_%D8%B4%D9%88%D8%AF\" >\u0686\u0647 TypeScript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0637\u0631\u0641 \u0634\u0648\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D9%85%D9%86%D8%B7%D9%82%DB%8C_%D9%87%D9%85%DA%86%D9%86%D8%A7%D9%86_%D8%A7%D8%AF%D8%A7%D9%85%D9%87_%D8%AF%D8%A7%D8%B4%D8%AA\" >\u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u062f\u0627\u0645\u0647 \u062f\u0627\u0634\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%87%D9%86%D9%88%D8%B2_%D9%87%D9%85_%D8%A8%D9%87_%D9%86%D8%B8%D9%85_%D9%88_%D8%A7%D9%86%D8%B6%D8%A8%D8%A7%D8%B7_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B4%D8%AA\" >\u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0647\u0646\u0648\u0632 \u0647\u0645 \u0628\u0647 \u0646\u0638\u0645 \u0648 \u0627\u0646\u0636\u0628\u0627\u0637 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#TypeScript_%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87_%D8%A7%D9%86%D8%AC%D8%A7%D9%85_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\" >TypeScript \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%DA%A9%D8%A7%D8%B3%D8%AA%DB%8C_%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C\" >\u06a9\u0627\u0633\u062a\u06cc \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%AF%D8%B1%DB%8C%DA%86%D9%87_%D9%81%D8%B1%D8%A7%D8%B1_%E2%80%9C%D9%87%D8%B1%E2%80%9D\" >\u062f\u0631\u06cc\u0686\u0647 \u0641\u0631\u0627\u0631 &#8220;\u0647\u0631&#8221;<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%A7%DB%8C%D9%86_%D8%A8%D9%87_%D9%85%D8%B9%D9%86%D8%A7%DB%8C_%D8%A8%D8%AD%D8%AB_Typescript_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_JavaScript_%DA%86%DB%8C%D8%B3%D8%AA\" >\u0627\u06cc\u0646 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0628\u062d\u062b Typescript \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 JavaScript \u0686\u06cc\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%AF%D8%B1%D8%B3%D9%87%D8%A7%DB%8C%DB%8C_%D8%A7%D8%B2_%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA_%D9%85%D8%AC%D8%AF%D8%AF\" >\u062f\u0631\u0633\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u062c\u062f\u062f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#1_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF%D9%87%D8%A7%DB%8C_%D8%B1%D8%A7%D8%A8%D8%B7_%D8%B5%D8%B1%DB%8C%D8%AD\" >1. \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u0635\u0631\u06cc\u062d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D8%AA%D8%B1%D8%AA%DB%8C%D8%A8_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AC%D8%A7%D9%85%D8%B9\" >\u062a\u0631\u062a\u06cc\u0628. \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062d\u0627\u0644\u062a \u062c\u0627\u0645\u0639<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#3_%D8%AD%D9%81%D8%A7%D8%B8%D8%AA_%D8%A7%D8%B2_%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C_%D9%85%D8%B1%D9%88%D8%B1%DA%AF%D8%B1\" >3. \u062d\u0641\u0627\u0638\u062a \u0627\u0632 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0645\u0631\u0648\u0631\u06af\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#4_%D8%A7%DB%8C%D9%85%D9%86%DB%8C_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B4%DA%A9%DB%8C%D9%84_%D8%AF%D9%87%DB%8C%D8%AF\" >4. \u0627\u06cc\u0645\u0646\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/nabfollower.com\/blog\/type-casting-doubt-how-a-typescript-re-migration-revealed-the-truth-about-turbo-2ajf\/#%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\" >\u067e\u0627\u06cc\u0627\u0646<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B7%D8%A7%D9%84%D8%A8\"><\/span>\n<p>  \u0645\u0637\u0627\u0644\u0628<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B2%D9%85%DB%8C%D9%86%D9%87_%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE%DB%8C_Typescript_%D8%AF%D8%B1_%D8%AA%D9%88%D8%B1%D8%A8%D9%88\"><\/span>\n<p>  \u0632\u0645\u06cc\u0646\u0647 \u062a\u0627\u0631\u06cc\u062e\u06cc Typescript \u062f\u0631 \u062a\u0648\u0631\u0628\u0648<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>DHH \u0627\u0638\u0647\u0627\u0631 \u062f\u0627\u0634\u062a \u06a9\u0647 &#8220;TypeScript \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0645\u0646 \u062f\u0631 \u0631\u0627\u0647 \u0627\u0633\u062a&#8221; \u0648 &#8220;\u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0633\u0627\u0646\u06cc \u0633\u062e\u062a \u0634\u0648\u0646\u062f \u0648 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0633\u062e\u062a \u0645\u06cc \u0634\u0648\u0646\u062f <code>any<\/code>. &#8220;\u0627\u06cc\u0646 \u062f\u06cc\u062f\u06af\u0627\u0647 \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u062e\u0627\u0635 \u0627\u062c\u0631\u0627\u06cc \u062a\u0648\u0631\u0628\u0648 \u060c \u0628\u0631\u0631\u0633\u06cc \u0631\u0627 \u062f\u0627\u0631\u062f.<\/p>\n<p>\u062a\u0627\u0631\u06cc\u062e \u0645\u062a\u0639\u0647\u062f \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc \u0646\u0633\u062e\u0647 \u0642\u0628\u0644\u06cc \u062a\u0648\u0631\u0628\u0648 \u062c\u0632\u0626\u06cc \u0648 \u0645\u062a\u0646\u0627\u0642\u0636 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a. \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0639\u0644\u0627\u0626\u0645 \u0646\u0648\u0639-\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0628\u0647 \u062c\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0628\u0647 \u0646\u0645\u0627\u06cc\u0634 \u06af\u0630\u0627\u0634\u062a\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u060c \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u0647\u0627\u06cc:<\/p>\n<ol>\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u0632 <code>any<\/code> \u0627\u0646\u0648\u0627\u0639 \u0628\u0631\u0627\u06cc \u062f\u0648\u0631 \u0632\u062f\u0646 \u0646\u0648\u0639 \u0628\u0631\u0631\u0633\u06cc<\/li>\n<li>\u0686\u06a9 \u0647\u0627\u06cc \u062a\u0647\u06cc \u062f\u0642\u06cc\u0642 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u067e\u0631\u062f\u0627\u062e\u062a\u0646 \u0628\u0647 \u0645\u0646\u0627\u0628\u0639 \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u062a\u0647\u06cc<\/li>\n<li>\u06a9\u0627\u0631\u0628\u0631\u062f \u0645\u062a\u0646\u0627\u0642\u0636 \u0627\u0632 \u0646\u0648\u0639 \u0627\u06cc\u0645\u0646\u06cc \u062f\u0631 \u0628\u06cc\u0646 \u0627\u062c\u0632\u0627\u06cc \u0645\u0631\u062a\u0628\u0637<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1_%D9%88%D8%A7%D9%82%D8%B9_%DA%86%D9%87_TypeScript_%D8%AB%D8%A7%D8%A8%D8%AA_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  \u062f\u0631 \u0648\u0627\u0642\u0639 \u0686\u0647 TypeScript \u062b\u0627\u0628\u062a \u0634\u062f\u0647 \u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u062e\u062a \u0627\u062c\u0631\u0627 \u0634\u062f \u060c Typecript \u062a\u0639\u062f\u0627\u062f\u06cc \u0627\u0632 \u0645\u0633\u0627\u0626\u0644 \u0627\u0635\u0644\u06cc \u0631\u0627 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062a\u0648\u0631\u0628\u0648 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D9%86%D8%A7%D8%A8%D8%B9_%D8%AA%D9%87%DB%8C\"><\/span>\n<p>  \u0645\u0646\u0627\u0628\u0639 \u062a\u0647\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0631\u062c\u0639 \u062a\u0647\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0634\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0628\u0627 \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f &#8220;\u0646\u0645\u06cc \u062a\u0648\u0627\u0646 \u0648\u06cc\u0698\u06af\u06cc&#8221; GetAttribute &#8220;NULL \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u06cc\u062f&#8221; \u062e\u0631\u0627\u0628 \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u0628\u0647 \u0648\u06cc\u0698\u0647 \u062e\u0637\u0631\u0646\u0627\u06a9 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u062f\u0631 \u062d\u06cc\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631 \u06a9\u0646\u0646\u062f \u0627\u0645\u0627 \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u062e\u0627\u0635 \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0634\u06a9\u0633\u062a \u0645\u06cc \u062e\u0648\u0631\u0646\u062f. \u0622\u0646\u0647\u0627 \u0645\u0646\u062c\u0631 \u0628\u0647 \u0635\u0641\u062d\u0627\u062a \u062e\u0627\u0644\u06cc \u060c \u06a9\u0646\u062a\u0631\u0644 \u0647\u0627\u06cc \u063a\u06cc\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u06cc\u0627 \u0646\u0627\u0648\u0628\u0631\u06cc \u0634\u06a9\u0633\u062a\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u06cc\u0645 \u060c \u0645\u0646\u0627\u0628\u0639 \u0639\u0646\u0627\u0635\u0631 \u063a\u0627\u0644\u0628\u0627\u064b \u0628\u062f\u0648\u0646 \u0628\u0631\u0631\u0633\u06cc \u0648\u062c\u0648\u062f \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0631\u062f\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u062f JavaScript \u0628\u06cc \u06af\u0646\u0627\u0647 \u0631\u0627 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0627\u0635\u0644\u06cc \u062a\u0648\u0631\u0628\u0648 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ From commit 9f3aad7: src\/core\/frames\/frame_controller.js<\/span>\n<span class=\"nf\">getRootLocation<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">meta<\/span> <span class=\"o\">=<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">.<\/span><span class=\"nx\">ownerDocument<\/span><span class=\"p\">.<\/span><span class=\"nf\">querySelector<\/span><span class=\"p\">(<\/span><span class=\"s2\">`meta[name=\"turbo-root\"]`<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">root<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">meta<\/span><span class=\"p\">?.<\/span><span class=\"nx\">content<\/span> <span class=\"o\">??<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nf\">expandURL<\/span><span class=\"p\">(<\/span><span class=\"nx\">root<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc \u0627\u0641\u062a\u062f <code>this.element<\/code> \u062a\u0647\u06cc \u0627\u0633\u062a\u061f JavaScript \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0627 \u06cc\u06a9 \u062e\u0637\u0627\u06cc \u0645\u0631\u062c\u0639 \u062a\u0647\u06cc \u062e\u0631\u0627\u0628 \u0645\u06cc \u0634\u0648\u062f. \u0646\u0633\u062e\u0647 Typescript \u062f\u0631 TS-Turbo \u0627\u06cc\u0646 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Current implementation in ts-turbo: src\/core\/frames\/frame_controller.ts<\/span>\n<span class=\"kd\">get<\/span> <span class=\"nf\">rootLocation<\/span><span class=\"p\">():<\/span> <span class=\"nx\">Location<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">)<\/span> <span class=\"k\">return<\/span> <span class=\"nf\">expandURL<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">meta<\/span> <span class=\"o\">=<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">.<\/span><span class=\"nx\">ownerDocument<\/span><span class=\"p\">.<\/span><span class=\"nx\">querySelector<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">HTMLMetaElement<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">(<\/span><span class=\"s2\">`meta[name=\"turbo-root\"]`<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">root<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">meta<\/span><span class=\"p\">?.<\/span><span class=\"nx\">content<\/span> <span class=\"o\">??<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">\/<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nf\">expandURL<\/span><span class=\"p\">(<\/span><span class=\"nx\">root<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u062f\u0631 \u06a9\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0634\u0645\u0627 \u0638\u0627\u0647\u0631 \u0645\u06cc \u0634\u0648\u062f \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062e\u0637\u0627\u0647\u0627\u06cc \u0628\u0647 \u0638\u0627\u0647\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0631\u0627 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0646\u0646\u062f \u06a9\u0647 \u062a\u0648\u0644\u06cc\u062f \u0645\u062b\u0644 \u0648 \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0622\u0646 \u062f\u0634\u0648\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%86%D8%A7%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C_%D9%87%D8%A7%DB%8C_%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C_%D8%B1%D8%A7%D8%A8%D8%B7\"><\/span>\n<p>  \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0647\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0631\u0627\u0628\u0637<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u0645\u062a\u0646\u0627\u0642\u0636 \u0627\u06cc\u062c\u0627\u062f &#8220;\u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0634\u0628\u062d&#8221; \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0642\u0637\u0639\u0627\u062a \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u0639\u0627\u062f\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0627\u0645\u0627 \u062f\u0631 \u0645\u0648\u0627\u0631\u062f \u0644\u0628\u0647 \u0634\u06a9\u0633\u062a \u0645\u06cc \u062e\u0648\u0631\u0646\u062f. \u0627\u06cc\u0646 \u0634\u06a9\u0633\u062a \u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0635\u0627\u062f\u0641\u0627\u062a \u06cc\u0627 \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0628\u0647 \u0638\u0627\u0647\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0622\u0634\u06a9\u0627\u0631 \u0645\u06cc \u0634\u0648\u0646\u062f \u06a9\u0647 \u0645\u062a\u0646\u0627\u0642\u0636 \u0639\u0645\u0644 \u0645\u06cc \u06a9\u0646\u062f. \u0639\u062f\u0645 \u062a\u0637\u0627\u0628\u0642 \u0631\u0627\u0628\u0637 \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u0632 \u062f\u0633\u062a \u0631\u0641\u062a\u0647 \u060c \u0627\u0646\u0648\u0627\u0639 \u0628\u0627\u0632\u06af\u0634\u062a \u063a\u06cc\u0631 \u0645\u0646\u062a\u0638\u0631\u0647 \u0648 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u063a\u06cc\u0631 \u0645\u0648\u062c\u0648\u062f \u060c \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0637\u0628\u06cc\u0639\u062a \u0633\u0633\u062a \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0647 \u0627\u062c\u0632\u0627\u06cc \u062a\u0648\u0631\u0628\u0648 \u0627\u062c\u0627\u0632\u0647 \u062f\u0627\u062f \u062a\u0627 \u0631\u0627\u0628\u0637 \u0647\u0627 \u0631\u0627 \u0645\u062a\u0646\u0627\u0642\u0636 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0646\u062f. \u06cc\u06a9 \u0645\u0633\u0626\u0644\u0647 \u0627\u062c\u0631\u0627\u06cc \u0631\u0627\u0628\u0637 \u0628\u0647 \u0648\u06cc\u0698\u0647 \u062e\u0637\u0631\u0646\u0627\u06a9 \u06a9\u0647 \u062f\u0631 \u0637\u0648\u0644 \u0645\u0647\u0627\u062c\u0631\u062a \u06cc\u0627\u0641\u062a \u0645\u06cc \u0634\u0648\u062f \u0634\u0627\u0645\u0644 \u0627\u0644\u06af\u0648\u06cc \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0631\u0648\u0634 \u0645\u0641\u0642\u0648\u062f \u0634\u062f\u0647 \u0627\u0633\u062a. \u062a\u0648\u0631\u0628\u0648 \u0627\u0632 \u0633\u06cc\u0633\u062a\u0645\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>FrameElement<\/code> \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062f\u0627\u0631\u062f \u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u0631\u0627\u0628\u0637 \u0635\u0631\u06cc\u062d \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0645\u0634\u062e\u0635 \u06a9\u0646\u062f \u0627\u06cc\u0646 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f \u0686\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<p>\u062f\u0631 frame_controller.js (\u062e\u0637\u0648\u0637 238) \u060c \u0645\u0627 \u06cc\u06a9 \u062a\u0645\u0627\u0633 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ In frame_controller.js - The method is called on the frame's delegate<\/span>\n<span class=\"nx\">frame<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span><span class=\"p\">.<\/span><span class=\"nf\">proposeVisitIfNavigatedWithAction<\/span><span class=\"p\">(<\/span><span class=\"nx\">frame<\/span><span class=\"p\">,<\/span> <span class=\"nx\">element<\/span><span class=\"p\">,<\/span> <span class=\"nx\">submitter<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0648\u0631\u0628\u0648 \u0627\u0644\u06af\u0648\u06cc \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0627\u06cc \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 <code>FrameElement<\/code> \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0633\u0627\u0632\u0646\u062f\u0647 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ In frame_element.js - The delegate is created but with no explicit interface<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">FrameElement<\/span> <span class=\"kd\">extends<\/span> <span class=\"nc\">HTMLElement<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">static<\/span> <span class=\"nx\">delegateConstructor<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">undefined<\/span>  <span class=\"c1\">\/\/ Set elsewhere in the codebase<\/span>\n\n  <span class=\"nf\">constructor<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">super<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nx\">FrameElement<\/span><span class=\"p\">.<\/span><span class=\"nf\">delegateConstructor<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"c1\">\/\/ The only delegate methods actually called are:<\/span>\n  <span class=\"nf\">connectedCallback<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span><span class=\"p\">.<\/span><span class=\"nf\">connect<\/span><span class=\"p\">()<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">disconnectedCallback<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span><span class=\"p\">.<\/span><span class=\"nf\">disconnect<\/span><span class=\"p\">()<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">attributeChangedCallback<\/span><span class=\"p\">(<\/span><span class=\"nx\">name<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">name<\/span> <span class=\"o\">==<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">loading<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span><span class=\"p\">.<\/span><span class=\"nf\">loadingStyleChanged<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">name<\/span> <span class=\"o\">==<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">src<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span><span class=\"p\">.<\/span><span class=\"nf\">sourceURLChanged<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n      <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">delegate<\/span><span class=\"p\">.<\/span><span class=\"nf\">disabledChanged<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0634\u06a9\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u060c \u0647\u06cc\u0686 \u0631\u0627\u0628\u0637 \u0635\u0631\u06cc\u062d \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f <code>proposeVisitIfNavigatedWithAction<\/code> \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062a\u0648\u0633\u0637 \u0647\u0631 \u06a9\u0644\u0627\u0633 \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <code>FrameElement.delegateConstructor<\/code>\u0628\u0634\u0631 \u0627\u06cc\u0646 \u06cc\u06a9 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0636\u0645\u0646\u06cc \u0648 \u0628\u062f\u0648\u0646 \u0645\u0633\u062a\u0646\u062f \u0628\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u0647\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0633\u0626\u0644\u0647 \u0628\u0647 \u062e\u0635\u0648\u0635 \u0634\u062f\u06cc\u062f \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u0648\u0632 \u06cc\u06a9 \u0646\u0627\u0648\u0628\u0631\u06cc \u0641\u0631\u06cc\u0645 \u060c \u062e\u0637\u0627\u06cc &#8220;\u0631\u0648\u0634 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f&#8221;. \u0627\u0632 \u0622\u0646\u062c\u0627 \u06a9\u0647 \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0641\u0642\u0637 \u062f\u0631 \u062a\u0648\u0627\u0644\u06cc \u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u062e\u0627\u0635 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u060c \u062a\u0634\u062e\u06cc\u0635 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0622\u0632\u0645\u0627\u06cc\u0634 \u062f\u0634\u0648\u0627\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u062f\u0631 TypeScript \u060c \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0628\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0631\u0627\u0628\u0637 \u0647\u0627\u06cc \u0635\u0631\u06cc\u062d \u06a9\u0647 \u062f\u0642\u06cc\u0642\u0627\u064b \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0686\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0627\u06cc\u062f \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f \u060c \u062d\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AC%D8%A8%D8%A7%D8%B1_%D9%86%D9%88%D8%B9_%DA%AF%DB%8C%D8%AC_%DA%A9%D9%86%D9%86%D8%AF%D9%87\"><\/span>\n<p>  \u0627\u062c\u0628\u0627\u0631 \u0646\u0648\u0639 \u06af\u06cc\u062c \u06a9\u0646\u0646\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u062c\u0628\u0627\u0631 \u0646\u0648\u0639 \u0636\u0645\u0646\u06cc JavaScript \u0627\u0634\u06a9\u0627\u0644\u0627\u062a\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0627\u0645\u0627 \u062f\u0631 \u0634\u0631\u0627\u06cc\u0637 \u062e\u0627\u0635 \u0646\u062a\u0627\u06cc\u062c \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0627\u0634\u06a9\u0627\u0644 \u0632\u062f\u0627\u06cc\u06cc \u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u062f\u0634\u0648\u0627\u0631 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u0645\u0634\u06a9\u0644\u0627\u062a \u0632\u06cc\u0633\u062a \u0645\u062d\u06cc\u0637\u06cc \u06cc\u0627 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0627\u062c\u0628\u0627\u0631 \u0627\u0632 \u0646\u0648\u0639 \u0636\u0645\u0646\u06cc JavaScript \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0638\u0631\u06cc\u0641 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f \u06a9\u0647 \u063a\u0627\u0644\u0628\u0627\u064b \u0628\u062f\u0648\u0646 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0645\u06cc \u0631\u0641\u062a\u0646\u062f \u062a\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0627\u0639\u062b \u062e\u0631\u0627\u0628\u06cc \u062a\u0648\u0644\u06cc\u062f \u0634\u0648\u0646\u062f. \u062f\u0631 SRC\/Core\/Drive\/History.js \u0645\u0627 \u06a9\u062f\u06cc \u0631\u0627 \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0633\u0624\u0627\u0644\u0627\u062a\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0642\u0635\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ Original JavaScript implementation - implicit type coercion<\/span>\n<span class=\"nf\">restore<\/span><span class=\"p\">(<\/span><span class=\"nx\">position<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">restorationIdentifier<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nf\">replaceState<\/span><span class=\"p\">(<\/span><span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nx\">state<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">location<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">())<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">location<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">location<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span>\n    <span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nf\">pushState<\/span><span class=\"p\">(<\/span><span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nx\">state<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">position<\/span><span class=\"p\">)<\/span>\n    <span class=\"c1\">\/\/ Number comparison with string using == (not ===)<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">currentIndex<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">scrollTo<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u062c\u0631\u0627\u06cc TypeScript \u062f\u0631 TS-Turbo \u0645\u0642\u0627\u06cc\u0633\u0647 \u0631\u0627 \u0635\u0631\u06cc\u062d \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0627\u062c\u0628\u0627\u0631 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ TypeScript implementation in ts-turbo<\/span>\n<span class=\"nf\">restore<\/span><span class=\"p\">(<\/span><span class=\"nx\">position<\/span><span class=\"p\">:<\/span> <span class=\"nx\">URL<\/span><span class=\"p\">):<\/span> <span class=\"k\">void<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">restorationIdentifier<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nf\">replaceState<\/span><span class=\"p\">(<\/span><span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nx\">state<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">location<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">())<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">location<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">location<\/span><span class=\"p\">.<\/span><span class=\"nx\">href<\/span>\n    <span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nf\">pushState<\/span><span class=\"p\">(<\/span><span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nx\">state<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"\"<\/span><span class=\"p\">,<\/span> <span class=\"nx\">position<\/span><span class=\"p\">)<\/span>\n    <span class=\"c1\">\/\/ Explicit comparison with proper typing<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">currentIndex<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nb\">window<\/span><span class=\"p\">.<\/span><span class=\"nf\">scrollTo<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0622\u06cc\u0627 \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc \u06cc\u0627 \u0627\u0646\u0648\u0627\u0639 \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0627\u0633\u062a\u061f<br \/>\u0628\u0627\u0632\u06af\u0634\u062a \u0627\u06cc\u0646. pageLoaded || Document.ReadyState == &#8220;\u06a9\u0627\u0645\u0644&#8221;. \u0627\u06cc\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0646\u06af\u0627\u0645\u06cc \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u062c\u0628\u0627\u0631. \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0645\u0627\u0698\u0648\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0627\u0631\u06cc\u062e \u06cc\u0627\u0641\u062a \u0634\u062f. \u0645\u0633\u0626\u0644\u0647 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0627\u0632 \u0622\u0646\u0686\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0627\u0633\u062a:<\/p>\n<ol>\n<li>\n<p>\u0627\u0644\u06af\u0648\u0647\u0627\u06cc \u0645\u0642\u0627\u06cc\u0633\u0647 \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631: \u062f\u0631 \u0637\u0648\u0644 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u060c \u0645\u0642\u0627\u06cc\u0633\u0647 \u0647\u0627\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc \u062f\u0642\u06cc\u0642 (\u0645\u0642\u0627\u06cc\u0633\u0647)<code>===<\/code>) \u0648 \u0628\u0631\u0627\u0628\u0631\u06cc \u06af\u0634\u0627\u062f (<code>==<\/code>) \u060c \u0627\u06cc\u062c\u0627\u062f \u0631\u0641\u062a\u0627\u0631 \u0645\u062a\u0646\u0627\u0642\u0636. <code>document.readyState == \"complete\"<\/code> \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u0632 \u0628\u0631\u0627\u0628\u0631\u06cc \u0634\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>this.restorationIdentifier === identifier<\/code> \u0627\u0632 \u0628\u0631\u0627\u0628\u0631\u06cc \u062f\u0642\u06cc\u0642 \u062f\u0631 \u062c\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0645\u0633\u0627\u0626\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0631\u062f\u06cc\u0627\u0628\u06cc \u062f\u0648\u0644\u062a: \u0633\u06cc\u0633\u062a\u0645 \u062a\u0627\u0631\u06cc\u062e \u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0641\u06cc \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f: \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc URL (\u0631\u0634\u062a\u0647 \u0647\u0627) \u060c \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc \u062a\u0631\u0645\u06cc\u0645 (\u0627\u0646\u0648\u0627\u0639 \u0645\u062e\u062a\u0644\u0637) \u0648 \u0627\u0634\u06cc\u0627\u0621 \u062f\u0648\u0644\u062a\u06cc. \u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 \u0628\u0631\u0627\u0628\u0631\u06cc \u0634\u0644 \u060c \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc URL \u0645\u0627\u0646\u0646\u062f &#8220;\/404&#8221; \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u0634\u0646\u0627\u0633\u0647 \u0647\u0627\u06cc \u0639\u062f\u062f\u06cc \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062a\u0641\u0627\u0648\u062a \u0647\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0645\u0631\u0648\u0631\u06af\u0631: \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627 \u0628\u0627 \u0647\u0645 \u0645\u062a\u0646\u0627\u0642\u0636 \u0627\u0634\u06cc\u0627\u0621 \u062a\u0627\u0631\u06cc\u062e \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f &#8211; \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0642\u06cc\u0642\u0627\u064b \u060c \u0628\u0631\u062e\u06cc \u062f\u06cc\u06af\u0631 \u0633\u0631\u06cc\u0627\u0644 \u0645\u06cc \u0634\u0648\u0646\u062f \u0648 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0631\u0648\u0646\u062f (\u0627\u0646\u0648\u0627\u0639 \u062f\u0631 \u062d\u0627\u0644 \u062a\u063a\u06cc\u06cc\u0631) \u060c \u0648 \u0633\u0627\u0641\u0627\u0631\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0634\u062a\u0647 \u0647\u0627\u06cc \u0639\u062f\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0628\u0631\u062e\u06cc \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627 \u0628\u0647 \u0627\u0639\u062f\u0627\u062f \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n<\/li>\n<\/ol>\n<p>\u0645\u062b\u0627\u0644 \u062f\u06cc\u06af\u0631 \u0627\u0632 \u0627\u0646\u062a\u0642\u0627\u0644 \u0641\u0631\u0645 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>\u062f\u0631 \u0641\u0631\u0645 \u0627\u0631\u0633\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645 \u060c \u0645\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0647\u0627\u06cc \u0636\u0645\u0646\u06cc \u0645\u0634\u06a9\u0644 \u0633\u0627\u0632 \u0631\u0627 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ Actual code from form_submission.js after TypeScript removal (commit 9f3aad7772ba8ef4080538e4e5fb175a8ad550f1)<\/span>\n<span class=\"kd\">get<\/span> <span class=\"nf\">method<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">method<\/span> <span class=\"o\">=<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">submitter<\/span><span class=\"p\">?.<\/span><span class=\"nf\">getAttribute<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">formmethod<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formElement<\/span><span class=\"p\">.<\/span><span class=\"nf\">getAttribute<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">method<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"\"<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nf\">fetchMethodFromString<\/span><span class=\"p\">(<\/span><span class=\"nx\">method<\/span><span class=\"p\">.<\/span><span class=\"nf\">toLowerCase<\/span><span class=\"p\">())<\/span> <span class=\"o\">||<\/span> <span class=\"nx\">FetchMethod<\/span><span class=\"p\">.<\/span><span class=\"kd\">get<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u0645\u0633\u0627\u0626\u0644 \u0628\u0627\u0644\u0642\u0648\u0647 \u0627\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0648\u0634 \u0631\u0634\u062a\u0647 \u062e\u0627\u0644\u06cc (\u06a9\u0647 \u062f\u0631 JavaScript \u0641\u0627\u0644 \u0627\u0633\u062a) \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0632 \u06cc\u06a9 \u0631\u0648\u0634 \u063a\u06cc\u0631 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u060c \u0648\u0642\u062a\u06cc \u0647\u0631 \u062f\u0648 \u0628\u0627\u06cc\u062f \u0628\u0647 \u0631\u0648\u0634 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0645\u0646\u062c\u0631 \u0634\u0648\u0646\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645 \u060c \u0686\u0646\u062f\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0627\u062c\u0628\u0627\u0631 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0631 \u062a\u0639\u0627\u0645\u0644 \u0648\u0627\u0642\u0639\u06cc \u06a9\u0627\u0631\u0628\u0631 \u062a\u0623\u062b\u06cc\u0631 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f:<\/p>\n<ol>\n<li>\n<p>\u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0647\u0627\u06cc \u062f\u0633\u062a \u0632\u062f\u0646 \u0628\u0647 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627: <code>getAttribute()<\/code> \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062e\u0627\u0644\u06cc &#8220;&#8221; &#8220;NULL \u0631\u0627 \u0628\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u063a\u06cc\u0631 \u0645\u0648\u062c\u0648\u062f \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f&#8221; &#8220;. \u0645\u0646\u0637\u0642\u06cc \u06cc\u0627 (<code>||<\/code>) \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0641\u0627\u0644 \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0628\u0627\u06cc\u062f \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p>\u062a\u0639\u06cc\u06cc\u0646 \u0631\u0648\u0634 \u0641\u0631\u0645: \u0641\u0631\u0645 \u0647\u0627\u06cc \u0648\u0628 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0631\u0648\u0634 \u0647\u0627\u06cc GET \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 POST \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u0628\u0631 \u0646\u0627\u0648\u0628\u0631\u06cc \u060c \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648 \u06a9\u0627\u0631 \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u062a\u0623\u062b\u06cc\u0631 \u0645\u06cc \u06af\u0630\u0627\u0631\u0646\u062f. \u0631\u0648\u0634 \u0627\u0634\u062a\u0628\u0627\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0627\u0639\u062b \u0627\u0632 \u0628\u06cc\u0646 \u0631\u0641\u062a\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u06cc\u0627 \u0645\u0634\u06a9\u0644\u0627\u062a \u0627\u0645\u0646\u06cc\u062a\u06cc \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0645\u0634\u06a9\u0644 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0622\u0628\u0634\u0627\u0631: \u0632\u0646\u062c\u06cc\u0631\u0647 \u06cc\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0627\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 <code>getAttribute()<\/code> \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0631\u0634\u062a\u0647 \u062a\u0647\u06cc \u060c \u0646\u0627\u0645\u0634\u062e\u0635 \u06cc\u0627 \u062e\u0627\u0644\u06cc \u0628\u0631\u06af\u0631\u062f\u062f \u0648 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0631\u0646\u062f.<\/p>\n<\/li>\n<\/ol>\n<p>\u0628\u0631\u0631\u0633\u06cc \u062f\u0642\u06cc\u0642 Typecript \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u0631\u0633\u06cc\u062f\u06af\u06cc \u0635\u0631\u06cc\u062d \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0645\u062e\u062a\u0644\u0641 \u0628\u0627\u0634\u062f.<\/p>\n<p>TypeScript \u062f\u0647 \u0647\u0627 \u0645\u0648\u0631\u062f \u0627\u0632 \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0628\u0631\u0631\u0633\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc \u06af\u0634\u0627\u062f \u0627\u0633\u062a \u060c \u067e\u0631\u0686\u0645 \u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a (<code>==<\/code>) \u0628\u0647 \u062c\u0627\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc \u0633\u062e\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u062f (<code>===<\/code>) \u060c \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0634\u062a\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0636\u0645\u0646\u06cc \u0628\u0647 \u0627\u0639\u062f\u0627\u062f \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u0634\u062f\u0646\u062f \u060c \u0648 \u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0631\u0634\u062a\u0647 \u0647\u0627\u06cc \u062e\u0627\u0644\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0641\u0627\u0644 \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u0634\u062f\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D9%87_TypeScript_%D9%86%D9%85%DB%8C_%D8%AA%D9%88%D8%A7%D9%86%D8%AF_%D8%A8%D8%B1%D8%B7%D8%B1%D9%81_%D8%B4%D9%88%D8%AF\"><\/span>\n<p>  \u0686\u0647 TypeScript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0631\u0637\u0631\u0641 \u0634\u0648\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u06cc\u06a9 \u06af\u0644\u0648\u0644\u0647 \u0646\u0642\u0631\u0647 \u0627\u06cc \u0646\u06cc\u0633\u062a \u060c \u0648 \u062f\u0633\u062a\u0647 \u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0627\u0632 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 TypeScript \u0645\u0635\u0648\u0646 \u0647\u0633\u062a\u0646\u062f:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D9%85%D9%86%D8%B7%D9%82%DB%8C_%D9%87%D9%85%DA%86%D9%86%D8%A7%D9%86_%D8%A7%D8%AF%D8%A7%D9%85%D9%87_%D8%AF%D8%A7%D8%B4%D8%AA\"><\/span>\n<p>  \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u0647\u0645\u0686\u0646\u0627\u0646 \u0627\u062f\u0627\u0645\u0647 \u062f\u0627\u0634\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 TypeScript \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0646\u0648\u0639 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631\u06cc \u0628\u0647 \u062e\u0648\u062f \u062c\u0644\u0628 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0645\u06cc \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0648 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f. \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0648\u0636\u0639\u06cc\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u062a\u0646\u0627\u0642\u0636 \u060c \u0627\u062c\u0631\u0627\u06cc \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0634\u062a\u0628\u0627\u0647 \u0648 \u0634\u0631\u0627\u06cc\u0637 \u0645\u0633\u0627\u0628\u0642\u0647 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0627\u063a\u0644\u0628 \u062f\u0631 \u062d\u06cc\u0646 \u0622\u0632\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0627\u0645\u0627 \u062f\u0631 \u062a\u0648\u0644\u06cc\u062f \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0628\u0627 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u06a9\u0647 \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0645\u06cc \u0634\u0648\u062f \u060c \u0634\u06a9\u0633\u062a \u0645\u06cc \u062e\u0648\u0631\u0646\u062f.<\/p>\n<p>\u0645\u0647\u0627\u062c\u0631\u062a \u0646\u0634\u0627\u0646 \u062f\u0627\u062f \u06a9\u0647 TypeScript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0632 \u0627\u0644\u06af\u0648\u0631\u06cc\u062a\u0645 \u0647\u0627\u06cc \u0646\u0627\u0642\u0635 \u06cc\u0627 \u062c\u0631\u06cc\u0627\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0646\u0627\u062f\u0631\u0633\u062a \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u062f\u0631 \u0627\u062c\u0631\u0627\u06cc Renderer \u067e\u06cc\u0627\u0645 \u062c\u0631\u06cc\u0627\u0646 \u060c \u062d\u062a\u06cc \u0628\u0627 TypeScript \u060c \u062e\u0637\u0627\u0647\u0627\u06cc \u0645\u0646\u0637\u0642\u06cc \u062f\u0631 \u062f\u0646\u0628\u0627\u0644\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u0628\u0627\u0642\u06cc \u0645\u0627\u0646\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From src\/core\/drive\/navigator.ts in the TypeScript codebase<\/span>\n<span class=\"nf\">visit<\/span><span class=\"p\">(<\/span><span class=\"nx\">location<\/span><span class=\"p\">:<\/span> <span class=\"nx\">URL<\/span><span class=\"p\">,<\/span> <span class=\"nx\">options<\/span><span class=\"p\">:<\/span> <span class=\"nb\">Partial<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">VisitOptions<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nb\">navigator<\/span><span class=\"p\">.<\/span><span class=\"nf\">visit<\/span><span class=\"p\">(<\/span><span class=\"nx\">location<\/span><span class=\"p\">,<\/span> <span class=\"nx\">options<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nf\">navigate<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Event<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nf\">isHashChangeEvent<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">))<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nb\">navigator<\/span><span class=\"p\">.<\/span><span class=\"nf\">update<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">location<\/span><span class=\"p\">,<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">replace<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Event and navigation handling run in separate async paths<\/span>\n    <span class=\"c1\">\/\/ TypeScript can't detect logical flow problems between these methods<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">linkClicked<\/span> <span class=\"o\">=<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nf\">getVisitOptions<\/span><span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nf\">visit<\/span><span class=\"p\">(<\/span><span class=\"nx\">linkClicked<\/span><span class=\"p\">.<\/span><span class=\"nx\">url<\/span><span class=\"p\">,<\/span> <span class=\"nx\">linkClicked<\/span><span class=\"p\">.<\/span><span class=\"nx\">options<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u062e\u0637\u0627\u06cc \u062c\u0631\u06cc\u0627\u0646 \u0645\u0646\u0637\u0642\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 Typecript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u062f:<\/p>\n<p>\u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0646\u0627\u0648\u0628\u0631\u06cc \u062a\u0648\u0631\u0628\u0648 \u060c \u0686\u0646\u062f\u06cc\u0646 \u0645\u0633\u06cc\u0631 \u0627\u0639\u062f\u0627\u0645 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<ol>\n<li>\u0631\u0648\u0634 \u067e\u06cc\u0645\u0627\u06cc\u0634 () \u0628\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u06a9\u0644\u06cc\u06a9 \u067e\u0627\u0633\u062e \u0645\u06cc \u062f\u0647\u062f<\/li>\n<li>getVisitOptions () \u0639\u0645\u0644\u06cc\u0627\u062a \u062f\u0627\u0645\u0646\u0647 (\u062e\u0648\u0627\u0646\u062f\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062f\u0627\u062f\u0647) \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0636\u0645\u0646\u06cc async \u0647\u0633\u062a\u0646\u062f<\/li>\n<li>\u0628\u0627\u0632\u062f\u06cc\u062f () \u0639\u0645\u0644\u06cc\u0627\u062a ASYNC \u0631\u0627 \u0622\u063a\u0627\u0632 \u0645\u06cc \u06a9\u0646\u062f (\u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u060c \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc API \u062a\u0627\u0631\u06cc\u062e)<\/li>\n<li>\u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0686\u0646\u062f\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u0631 \u0633\u0637\u0648\u062d \u0645\u062e\u062a\u0644\u0641 (\u067e\u0646\u062c\u0631\u0647 \u060c \u0633\u0646\u062f \u060c \u0639\u0646\u0627\u0635\u0631) \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0637\u0648\u0631 \u0647\u0645\u0632\u0645\u0627\u0646 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0631\u0642\u06cc\u0628 \u0631\u0627 \u062a\u062d\u0631\u06cc\u06a9 \u06a9\u0646\u0646\u062f<\/li>\n<\/ol>\n<p>\u0634\u0631\u0627\u06cc\u0637 \u0645\u0633\u0627\u0628\u0642\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u06a9\u0647 \u0628\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u060c URL \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 \u06a9\u062f \u062f\u06cc\u06af\u0631 \u0627\u0635\u0644\u0627\u062d \u06a9\u0631\u062f \u060c \u0686\u0646\u062f\u06cc\u0646 \u06a9\u0644\u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc \u0631\u0642\u0627\u0628\u062a\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u060c \u0648 \u0627\u06cc\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627 \u062f\u0631 \u0686\u0631\u062e\u0647 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062d\u0644\u0642\u0647 \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f \u06a9\u0647 Tipcript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0633\u0627\u0626\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0628\u0646\u062f\u06cc \u0645\u0646\u062c\u0631 \u0628\u0647 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0634\u062f \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0648\u06cc \u06cc\u06a9 \u067e\u06cc\u0648\u0646\u062f \u06a9\u0644\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0627\u0645\u0627 \u062f\u0631 \u06cc\u06a9 URL \u0645\u062a\u0641\u0627\u0648\u062a \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u0646\u062f \u060c \u0646\u0627\u0648\u0628\u0631\u06cc \u0628\u0631\u06af\u0634\u062a\/\u0631\u0648 \u0628\u0647 \u062c\u0644\u0648 \u067e\u0633 \u0627\u0632 \u062a\u0639\u0627\u0645\u0644 \u0633\u0631\u06cc\u0639 \u0634\u06a9\u0633\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0645\u0631\u0648\u0631\u06af\u0631 \u0648 \u062a\u0648\u0631\u0628\u0648 \u062f\u0631 \u0645\u0648\u0631\u062f URL &#8220;\u0641\u0639\u0644\u06cc&#8221; \u0628\u0647 \u062d\u0627\u0644\u062a \u0647\u0627\u06cc \u0645\u062a\u0646\u0627\u0642\u0636 \u0645\u06cc \u0631\u0648\u0646\u062f.<\/p>\n<p>TypeScript \u0641\u0642\u0637 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0648 \u0627\u0646\u0648\u0627\u0639 \u0628\u0627\u0632\u06af\u0634\u062a \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f \u060c \u0627\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0631\u0627 \u062f\u0631 \u062d\u0644\u0642\u0647 \u0647\u0627\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u062a\u0634\u062e\u06cc\u0635 \u062f\u0647\u062f \u060c \u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0628\u06cc\u0646 \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc ASYNC \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f \u060c \u06cc\u0627 \u0627\u0632 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u062f\u0648\u0644\u062a \u062f\u0631 \u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0686\u0646\u062f \u0631\u0648\u06cc\u062f\u0627\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0622\u0632\u0645\u0627\u06cc\u0634 \u062a\u062e\u0635\u0635\u06cc (\u0645\u0627\u0646\u0646\u062f \u0622\u0632\u0645\u0627\u06cc\u0634 \u0633\u0631\u06cc\u0639 \u06a9\u0644\u06cc\u06a9) \u0648 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u062a\u0648\u0627\u0644\u06cc \u0631\u0648\u06cc\u062f\u0627\u062f \u062f\u0631 \u0637\u0648\u0644 \u0628\u0631\u0631\u0633\u06cc \u06a9\u062f &#8211; \u0645\u0648\u0627\u0631\u062f\u06cc \u06a9\u0647 \u0628\u0631\u0631\u0633\u06cc \u0646\u0648\u0639 \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u062f\u0647\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%AF%DB%8C%D8%B1%DB%8C%D8%AA_%D8%AD%D8%A7%D9%81%D8%B8%D9%87_%D9%87%D9%86%D9%88%D8%B2_%D9%87%D9%85_%D8%A8%D9%87_%D9%86%D8%B8%D9%85_%D9%88_%D8%A7%D9%86%D8%B6%D8%A8%D8%A7%D8%B7_%D9%86%DB%8C%D8%A7%D8%B2_%D8%AF%D8%A7%D8%B4%D8%AA\"><\/span>\n<p>  \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0647\u0646\u0648\u0632 \u0647\u0645 \u0628\u0647 \u0646\u0638\u0645 \u0648 \u0627\u0646\u0636\u0628\u0627\u0637 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0634\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u0633\u0627\u0626\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0628\u0627\u0639\u062b \u062a\u062e\u0631\u06cc\u0628 \u0639\u0645\u0644\u06a9\u0631\u062f \u062a\u062f\u0631\u06cc\u062c\u06cc \u060c \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u0635\u0631\u0641 \u062d\u0627\u0641\u0638\u0647 \u0648 \u062a\u0635\u0627\u062f\u0641\u0627\u062a \u0645\u0631\u0648\u0631\u06af\u0631 \u067e\u0633 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0637\u0648\u0644\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627 \u0628\u0627 \u06af\u0630\u0634\u062a \u0632\u0645\u0627\u0646 \u0648 \u0628\u062f\u0648\u0646 \u0631\u0627\u0647 \u062d\u0644 \u0648\u0627\u0636\u062d \u0628\u0647 \u062c\u0632 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062c\u062f\u062f \u060c \u06a9\u0646\u062f\u062a\u0631 \u0645\u06cc \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a \u0628\u0647 \u0648\u06cc\u0698\u0647 \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u062a\u06a9 \u0635\u0641\u062d\u0647 \u0627\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u0646\u0627\u0628\u0639 \u0628\u0647 \u0637\u0648\u0631 \u0637\u0628\u06cc\u0639\u06cc \u062a\u0648\u0633\u0637 \u0646\u0627\u0648\u0628\u0631\u06cc \u0635\u0641\u062d\u0647 \u062a\u0645\u06cc\u0632 \u0646\u0645\u06cc \u0634\u0648\u0646\u062f \u060c \u0634\u062f\u06cc\u062f \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0648\u0630\u06cc\u0627\u0646\u0647 \u062a\u0631\u06cc\u0646 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u062a\u0648\u0631\u0628\u0648 \u0634\u0627\u0645\u0644 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0628\u0648\u062f. \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 stream_source_element.js \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"c1\">\/\/ From commit 9f3aad7: src\/elements\/stream_source_element.js<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">StreamSourceElement<\/span> <span class=\"kd\">extends<\/span> <span class=\"nc\">HTMLElement<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">streamSource<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">null<\/span>\n\n  <span class=\"nf\">connectedCallback<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span> <span class=\"o\">=<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nf\">match<\/span><span class=\"p\">(<\/span><span class=\"sr\">\/^ws<\/span><span class=\"se\">{1,2}<\/span><span class=\"sr\">:\/<\/span><span class=\"p\">)<\/span> <span class=\"p\">?<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">WebSocket<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">)<\/span> <span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">EventSource<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"nf\">connectStreamSource<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">disconnectedCallback<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nf\">disconnectStreamSource<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"kd\">get<\/span> <span class=\"nf\">src<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nf\">getAttribute<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">src<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"\"<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0645\u0646\u0637\u0642 \u0642\u0637\u0639 \u0627\u0631\u062a\u0628\u0627\u0637 \u0646\u0627\u0642\u0635 \u0628\u0627\u0634\u062f \u060c TypeScript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0646\u0634\u062a \u062d\u0627\u0641\u0638\u0647 \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u062f. \u0627\u0644\u06af\u0648\u06cc \u0641\u0648\u0642 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0631\u062f\u06cc\u0627\u0628\u06cc \u062f\u0642\u06cc\u0642 \u06a9\u0644\u06cc\u0647 \u0645\u0646\u0627\u0628\u0639 \u062f\u0631 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0628\u0647\u062a\u0631 \u0632\u0645\u06cc\u0646\u0647 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc TypeScript \u0648 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u0627\u0635\u0644\u06cc \u062f\u0631 \u0622\u0646 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ src\/elements\/stream_source_element.ts (TypeScript implementation)<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">StreamSourceElement<\/span> <span class=\"kd\">extends<\/span> <span class=\"nc\">HTMLElement<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nl\">streamSource<\/span><span class=\"p\">:<\/span> <span class=\"nx\">StreamSource<\/span> <span class=\"o\">|<\/span> <span class=\"kc\">null<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">null<\/span>\n\n  <span class=\"nf\">connectedCallback<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Creates either WebSocket or EventSource based on URL pattern<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span> <span class=\"o\">=<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">.<\/span><span class=\"nf\">match<\/span><span class=\"p\">(<\/span><span class=\"sr\">\/^ws<\/span><span class=\"se\">{1,2}<\/span><span class=\"sr\">:\/<\/span><span class=\"p\">)<\/span> <span class=\"p\">?<\/span> \n      <span class=\"k\">new<\/span> <span class=\"nc\">WebSocket<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">)<\/span> <span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">EventSource<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">src<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"nf\">connectStreamSource<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">disconnectedCallback<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nf\">disconnectStreamSource<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">streamSource<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Example from observer pattern in frame_controller.ts<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">FrameController<\/span> <span class=\"k\">implements<\/span> <span class=\"nx\">LinkClickObserverDelegate<\/span><span class=\"p\">,<\/span> \n  <span class=\"nx\">AppearanceObserverDelegate<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">FrameElement<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">,<\/span> <span class=\"nx\">FormSubmitObserverDelegate<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Multiple observers that need to be started\/stopped at the right times<\/span>\n  <span class=\"k\">readonly<\/span> <span class=\"nx\">appearanceObserver<\/span><span class=\"p\">:<\/span> <span class=\"nx\">AppearanceObserver<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">FrameElement<\/span><span class=\"o\">&gt;<\/span>\n  <span class=\"k\">readonly<\/span> <span class=\"nx\">formLinkClickObserver<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FormLinkClickObserver<\/span>\n  <span class=\"k\">readonly<\/span> <span class=\"nx\">formSubmitObserver<\/span><span class=\"p\">:<\/span> <span class=\"nx\">FormSubmitObserver<\/span>\n\n  <span class=\"nf\">constructor<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Create observers that register event listeners<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">appearanceObserver<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">AppearanceObserver<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formLinkClickObserver<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">FormLinkClickObserver<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formSubmitObserver<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">FormSubmitObserver<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span><span class=\"p\">,<\/span> <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">element<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">connect<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">appearanceObserver<\/span><span class=\"p\">.<\/span><span class=\"nf\">start<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formLinkClickObserver<\/span><span class=\"p\">.<\/span><span class=\"nf\">start<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formSubmitObserver<\/span><span class=\"p\">.<\/span><span class=\"nf\">start<\/span><span class=\"p\">()<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"nf\">disconnect<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">appearanceObserver<\/span><span class=\"p\">.<\/span><span class=\"nf\">stop<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formLinkClickObserver<\/span><span class=\"p\">.<\/span><span class=\"nf\">stop<\/span><span class=\"p\">()<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">formSubmitObserver<\/span><span class=\"p\">.<\/span><span class=\"nf\">stop<\/span><span class=\"p\">()<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u06cc\u06a9 \u0686\u0627\u0644\u0634 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0628\u0632\u0631\u06af\u062a\u0631 \u062f\u0631 \u062a\u0648\u0631\u0628\u0648 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f. \u0632\u0645\u06cc\u0646\u0647 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ol>\n<li>\n<p>\u0645\u0627\u0644\u06a9\u06cc\u062a \u0645\u0646\u0627\u0628\u0639 \u0686\u0646\u062f \u0644\u0627\u06cc\u0647: \u0639\u0646\u0635\u0631 StreamSource \u06a9\u0646\u062a\u0631\u0644\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0646\u0627\u0638\u0631\u0627\u0646 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u0636\u0645\u06cc\u0645\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u0648 \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0634\u0628\u06a9\u0647 \u0631\u0627 \u0628\u0631\u0642\u0631\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0645\u062b\u0627\u0644 FrameController \u060c \u0633\u0647 \u0646\u0648\u0639 \u0646\u0627\u0638\u0631 \u0645\u062e\u062a\u0644\u0641 \u0641\u0648\u0631\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f \u06a9\u0647 \u0647\u0631 \u06cc\u06a9 \u0628\u0647 \u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0645\u0646\u0627\u0633\u0628 \u0634\u0631\u0648\u0639\/\u062a\u0648\u0642\u0641 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0634\u06a9\u0627\u0641\u0647\u0627\u06cc \u0642\u0637\u0639: \u0642\u0637\u0639 \u0627\u0631\u062a\u0628\u0627\u0637 \u0641\u0642\u0637 HostDisconnected () \u0631\u0627 \u0635\u062f\u0627 \u0645\u06cc \u06a9\u0646\u062f \u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0645\u0647 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0631\u0627 \u062a\u0645\u06cc\u0632 \u0646\u06a9\u0646\u062f \u060c \u0627\u062a\u0635\u0627\u0644\u0627\u062a \u0628\u0633\u062a\u0647 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f \u06cc\u0627 \u0648\u0642\u0641\u0647 \u0647\u0627 \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0641\u0639\u0627\u0644 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. TypeScript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0647\u0645\u0627\u0647\u0646\u06af\u06cc \u0645\u0624\u0644\u0641\u0647 \u0647\u0627\u06cc \u0645\u062a\u0642\u0627\u0628\u0644: TypeScript \u0647\u06cc\u0686 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0645\u0646\u0627\u0628\u0639 \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u0645\u0624\u0644\u0641\u0647 \u062a\u0648\u0633\u0637 \u0628\u062e\u0634 \u062f\u06cc\u06af\u0631 \u0646\u062f\u0627\u0631\u062f \u060c \u0646\u0627\u0638\u0631\u0627\u0646 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u0646\u062f \u060c \u06cc\u0627 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062d\u0630\u0641 \u0645\u06cc \u0634\u0648\u0646\u062f. TypeScript \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0631\u0648\u0634\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f \u0627\u0645\u0627 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u06cc\u0627 \u062f\u0646\u0628\u0627\u0644\u0647 \u0645\u0646\u0627\u0633\u0628 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<\/li>\n<\/ol>\n<p>TypeScript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u06cc\u0646 \u0686\u0627\u0644\u0634 \u0647\u0627\u06cc \u0627\u0633\u0627\u0633\u06cc \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u0631\u0627 \u062d\u0644 \u06a9\u0646\u062f \u0632\u06cc\u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647 \u0647\u0627\u06cc \u0648\u0628 \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0648\u0639 \u0628\u0631\u0631\u0633\u06cc \u0628\u0627\u0634\u062f \u060c \u0628\u0647 \u06cc\u06a9 \u0631\u0648\u06cc\u06a9\u0631\u062f \u062c\u0627\u0645\u0639 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0645\u0633\u0626\u0644\u0647 \u0641\u0642\u0637 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062f\u0627\u0634\u062a\u0646 \u0627\u0645\u0636\u0627\u0647\u0627\u06cc \u0646\u0648\u0639 \u0635\u062d\u06cc\u062d \u0646\u0628\u0648\u062f \u060c \u0628\u0644\u06a9\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u06a9\u0627\u0645\u0644 \u0645\u0646\u0627\u0628\u0639 \u0628\u0648\u062f.<\/p>\n<p>\u0633\u0627\u06cc\u0631 \u0645\u0633\u0627\u0626\u0644 \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u0634\u0627\u0645\u0644 \u0634\u0646\u0648\u0646\u062f\u06af\u0627\u0646 \u0631\u0648\u06cc\u062f\u0627\u062f \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062d\u0630\u0641 \u0646\u0634\u062f\u0647 \u060c \u0645\u0646\u0627\u0628\u0639 \u062f\u0627\u06cc\u0631\u0647 \u0627\u06cc \u0627\u0632 \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0632\u0628\u0627\u0644\u0647 \u0647\u0627 \u0648 \u0645\u0646\u0627\u0628\u0639 \u0645\u0646\u062a\u0634\u0631 \u0646\u0634\u062f\u0647 \u067e\u0633 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647.<\/p>\n<p>TypeScript \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0645\u06cc \u06a9\u0631\u062f. \u0645\u062f\u06cc\u0631\u06cc\u062a \u062d\u0627\u0641\u0638\u0647 \u062f\u0631 JavaScript \u0628\u062f\u0648\u0646 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0646 \u0633\u06cc\u0633\u062a\u0645 \u0646\u0648\u0639 \u060c \u0628\u0647 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0627\u0646\u0636\u0628\u0627\u0637\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u0648 \u0686\u06a9 \u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 Typecript \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u067e\u0627\u06a9\u0633\u0627\u0632\u06cc \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"TypeScript_%D8%A7%D8%B4%D8%AA%D8%A8%D8%A7%D9%87_%D8%A7%D9%86%D8%AC%D8%A7%D9%85_%D8%B4%D8%AF%D9%87_%D8%A7%D8%B3%D8%AA\"><\/span>\n<p>  TypeScript \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u062c\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc \u0648 \u0645\u062a\u0646\u0627\u0642\u0636 Typescript \u0634\u0631\u0627\u06cc\u0637\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062a\u0645\u0627\u0645 \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc TypeScript (\u0627\u06cc\u062c\u0627\u062f \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u060c \u0645\u0646\u062d\u0646\u06cc \u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u060c \u062a\u0639\u0627\u0631\u06cc\u0641 \u0646\u0648\u0639) \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062a\u0639\u062f\u0627\u062f \u06a9\u0645\u06cc \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u062f \u060c \u0645\u062a\u062d\u0645\u0644 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0627\u062d\u0633\u0627\u0633 \u0627\u0645\u0646\u06cc\u062a \u06a9\u0627\u0630\u0628 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f \u0648 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u0631\u0627 \u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f \u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u0639\u0636\u0627\u06cc \u062a\u06cc\u0645 \u0648\u0642\u062a \u062e\u0648\u062f \u0631\u0627 \u0635\u0631\u0641 \u0645\u0628\u0627\u0631\u0632\u0647 \u0628\u0627 \u0633\u06cc\u0633\u062a\u0645 \u0646\u0648\u0639 \u0645\u06cc \u06a9\u0646\u0646\u062f \u062a\u0627 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u0634\u0627\u06cc\u062f \u0622\u0634\u06a9\u0627\u0631\u062a\u0631\u06cc\u0646 \u06cc\u0627\u0641\u062a\u0647 \u062a\u0631\u06cc\u0646 \u06cc\u0627\u0641\u062a\u0647 \u0627\u06cc\u0646 \u0628\u0648\u062f \u06a9\u0647 \u062a\u0648\u0631\u0628\u0648 \u062f\u0631 \u0648\u0647\u0644\u0647 \u0627\u0648\u0644 \u0648\u0627\u0642\u0639\u0627\u064b TypeCript \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0627\u062c\u0631\u0627 \u0646\u06a9\u0631\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B3%D8%AA%DB%8C_%D9%87%D8%A7%DB%8C_%D9%BE%DB%8C%DA%A9%D8%B1%D8%A8%D9%86%D8%AF%DB%8C\"><\/span>\n<p>  \u06a9\u0627\u0633\u062a\u06cc \u0647\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc TypeScript \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u062a\u0644\u0627\u0634 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0627\u0633\u0627\u0633\u0627\u064b \u0646\u0627\u0642\u0635 \u0628\u0648\u062f. \u0627\u0632 tsconfig.json \u0642\u0628\u0644 \u0627\u0632 \u062d\u0630\u0641 \u062f\u0631 \u062a\u0639\u0647\u062f 0826B8152C0E97F19D459C1A1A1C364FA89CC62829<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"compilerOptions\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"esModuleInterop\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"lib\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"dom\"<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"dom.iterable\"<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"esnext\"<\/span><span class=\"w\"> <\/span><span class=\"p\">],<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"module\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"es2015\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"moduleResolution\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"node\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"noUnusedLocals\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"rootDir\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"src\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"strict\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"target\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"es2017\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"noEmit\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"removeComments\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"skipLibCheck\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"isolatedModules\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"exclude\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"dist\"<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"src\/tests\/fixtures\"<\/span><span class=\"p\">,<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"playwright.config.ts\"<\/span><span class=\"w\"> <\/span><span class=\"p\">]<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u0648\u0636\u0648\u0639\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0634\u0627\u0645\u0644:<\/p>\n<ul>\n<li>\u062f\u0631 <code>tsconfig.json<\/code> \u0639\u0644\u06cc \u0631\u063a\u0645 \u0627\u062f\u0639\u0627\u06cc &#8220;\u0633\u062e\u062a\u06af\u06cc\u0631\u0627\u0646\u0647&#8221; \u060c \u0641\u0627\u0642\u062f \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0633\u062e\u062a\u06af\u06cc\u0631\u0627\u0646\u0647 \u0628\u0648\u062f<\/li>\n<li>\u0646\u0648\u0639 \u0645\u0647\u0645 \u0628\u0631\u0631\u0633\u06cc \u067e\u0631\u0686\u0645 \u0647\u0627 \u0645\u0627\u0646\u0646\u062f <code>strictNullChecks<\/code> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u062f\u0639\u0627\u0647\u0627\u06cc \u0646\u0648\u0639 \u0627\u0632 \u0644\u062d\u0627\u0638 \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0634\u062f\u0646\u062f<\/li>\n<li>\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0628\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0639\u0645\u0644 \u0645\u062c\u0627\u0632\u0627\u062a \u0628\u0627\u0634\u062f \u0646\u0647 \u0633\u062e\u062a\u06af\u06cc\u0631\u0627\u0646\u0647<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%DB%8C%DA%86%D9%87_%D9%81%D8%B1%D8%A7%D8%B1_%E2%80%9C%D9%87%D8%B1%E2%80%9D\"><\/span>\n<p>  \u062f\u0631\u06cc\u0686\u0647 \u0641\u0631\u0627\u0631 &#8220;\u0647\u0631&#8221;<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a \u0628\u0627\u0644\u0642\u0648\u0647 \u067e\u0631\u0686\u0645 \u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u060c \u0631\u0627\u0647 \u062d\u0644 \u0645\u0634\u062a\u0631\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>any<\/code> \u0628\u0647 \u062c\u0627\u06cc \u0631\u0641\u0639 \u0645\u0634\u06a9\u0644 \u0627\u0633\u0627\u0633\u06cc \u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0631\u0627 \u062e\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From stream_message.ts prior to removal<\/span>\n<span class=\"c1\">\/\/ Instead of properly typing this:<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">processMessage<\/span><span class=\"p\">(<\/span><span class=\"nx\">message<\/span><span class=\"p\">:<\/span> <span class=\"kr\">any<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Access properties without type checking<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">message<\/span><span class=\"p\">.<\/span><span class=\"nx\">content<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Type safety completely bypassed<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From error_renderer.ts prior to removal<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">renderError<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">:<\/span> <span class=\"kr\">any<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Using any to avoid properly modeling the error hierarchy<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Unknown error<\/span><span class=\"dl\">\"<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Using any to bypass element type checking<\/span>\n<span class=\"kd\">function<\/span> <span class=\"nf\">processNode<\/span><span class=\"p\">(<\/span><span class=\"nx\">node<\/span><span class=\"p\">:<\/span> <span class=\"kr\">any<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Directly accessing element properties without verification<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">node<\/span><span class=\"p\">.<\/span><span class=\"nx\">id<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">node<\/span><span class=\"p\">.<\/span><span class=\"nx\">hasAttribute<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ This crashes if node is a Text node, not an Element<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ Promise error handling with any type<\/span>\n<span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">handleRequest<\/span><span class=\"p\">(<\/span><span class=\"nx\">request<\/span><span class=\"p\">:<\/span> <span class=\"kr\">any<\/span><span class=\"p\">):<\/span> <span class=\"nb\">Promise<\/span><span class=\"o\">&lt;<\/span><span class=\"kr\">any<\/span><span class=\"o\">&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Generic error handling that loses error type information<\/span>\n    <span class=\"k\">return<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">fetch<\/span><span class=\"p\">(<\/span><span class=\"nx\">request<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"na\">error<\/span><span class=\"p\">:<\/span> <span class=\"kr\">any<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">error<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">.<\/span><span class=\"nx\">message<\/span><span class=\"p\">)<\/span> <span class=\"c1\">\/\/ May fail if error isn't an Error object<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0638\u0627\u0647\u0631 \u0634\u062f \u060c \u0648 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631\u06cc \u0645\u0632\u0627\u06cc\u0627\u06cc TypeScript \u0631\u0627 \u062e\u0646\u062b\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D9%86_%D8%A8%D9%87_%D9%85%D8%B9%D9%86%D8%A7%DB%8C_%D8%A8%D8%AD%D8%AB_Typescript_%D8%AF%D8%B1_%D9%85%D9%82%D8%A7%D8%A8%D9%84_JavaScript_%DA%86%DB%8C%D8%B3%D8%AA\"><\/span>\n<p>  \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0628\u062d\u062b Typescript \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 JavaScript \u0686\u06cc\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0646\u0627\u0627\u0645\u06cc\u062f\u06cc DHH \u0627\u0632 TypeScript \u0647\u0646\u06af\u0627\u0645 \u0645\u0634\u0627\u0647\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646 \u0644\u0646\u0632 \u0628\u06cc\u0634\u062a\u0631 \u062d\u0633 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06af\u0631 \u062a\u062c\u0631\u0628\u0647 \u0634\u0645\u0627 \u0628\u0627 TypeScript \u0634\u0627\u0645\u0644 \u0645\u0628\u0627\u0631\u0632\u0647 \u0628\u0627 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0636\u0639\u06cc\u0641 \u060c \u0627\u062c\u0631\u0627\u06cc \u0646\u0648\u0639 \u0645\u062a\u0646\u0627\u0642\u0636 \u0648 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u062c\u0632\u0626\u06cc \u0627\u0633\u062a \u060c \u067e\u0633 \u0627\u0632 \u0622\u0646 \u0647\u0645\u0647 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u0631\u0627 \u0628\u0627 \u062a\u0639\u062f\u0627\u062f \u06a9\u0645\u06cc \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u062d\u0630\u0641 TypeScript \u060c \u06cc\u06a9 \u0686\u06a9 \u062f\u0631 \u06a9\u062f \u062f\u0631\u0633\u062a 36 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f <code>any<\/code> \u062f\u0631 \u0642\u0633\u0645\u062a \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646\u0647\u0627 \u062f\u0631 \u067e\u0631\u0648\u0646\u062f\u0647 \u0647\u0627\u06cc \u0645\u0647\u0645 \u0645\u0627\u0646\u0646\u062f \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u0627\u0631\u06cc\u062e \u060c \u0627\u0631\u0627\u0626\u0647 \u060c \u062f\u0631\u062e\u0648\u0627\u0633\u062a HTTP \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc DOM \u06cc\u0627\u0641\u062a \u0634\u062f.<\/p>\n<p>TypeScript \u0628\u0627 \u062f\u0631\u06cc\u0686\u0647 \u0647\u0627\u06cc \u0641\u0631\u0627\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0627\u062c\u0631\u0627 \u0634\u062f \u06a9\u0647 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u06cc\u0645\u0646\u06cc \u0622\u0646 \u0631\u0627 \u062a\u0636\u0639\u06cc\u0641 \u0645\u06cc \u06a9\u0631\u062f. \u062c\u0627\u0644\u0628 \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 36 \u0645\u0648\u0631\u062f \u0627\u0632 \u0622\u0646 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a <code>any<\/code> \u0627\u0646\u0648\u0627\u0639 \u060c \u0647\u06cc\u0686 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0646\u0638\u0631\u0627\u062a \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a <code>@ts-ignore<\/code>\u0628\u0627 <code>@ts-expect-error<\/code>\u060c \u06cc\u0627 <code>@ts-nocheck<\/code> \u062f\u0631 \u067e\u0627\u06cc\u0647 \u06a9\u062f \u0627\u06cc\u0646 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u062f\u0631 \u062f\u0631\u062c\u0647 \u0627\u0648\u0644 \u0627\u0632 <code>any<\/code> \u0628\u0647 \u062c\u0627\u06cc \u0633\u0631\u06a9\u0648\u0628 \u062e\u0637\u0627\u0647\u0627\u06cc \u062e\u0627\u0635 \u0628\u0627 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644 \u0647\u0627 \u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062f\u0631\u06cc\u0686\u0647 \u0627\u0635\u0644\u06cc \u0641\u0631\u0627\u0631 \u062e\u0648\u062f \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u0627\u062c\u0631\u0627\u06cc Typescript \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0627\u062d\u062a\u0645\u0627\u0644\u0627\u064b \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u062d\u0627\u0644\u062a \u062f\u0642\u06cc\u0642 \u060c \u0628\u0627 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u067e\u06cc\u0634 \u0641\u0631\u0636 <code>any<\/code> \u0647\u0646\u06af\u0627\u0645 \u0645\u0648\u0627\u062c\u0647\u0647 \u0628\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0631\u062f\u0646 \u0686\u0627\u0644\u0634 \u0647\u0627 \u0628\u0647 \u062c\u0627\u06cc \u062d\u0644 \u0635\u062d\u06cc\u062d \u0645\u0634\u06a9\u0644\u0627\u062a \u0646\u0648\u0639. \u0646\u062a\u06cc\u062c\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0628\u0627 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u062a\u0645\u0627\u0645 TypeScript \u0627\u0645\u0627 \u062a\u0639\u062f\u0627\u062f \u06a9\u0645\u06cc \u0627\u0632 \u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u06cc\u0645\u0646\u06cc \u0622\u0646 \u0628\u0648\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644 \u060c \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0646\u06cc\u0633\u062a \u06a9\u0647 TypeScript \u0628\u0647 \u062e\u0648\u062f\u06cc \u062e\u0648\u062f \u0646\u0627\u0642\u0635 \u0627\u0633\u062a. \u0634\u0648\u0627\u0647\u062f \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 \u0645\u0647\u0627\u062c\u0631\u062a \u062a\u0648\u0631\u0628\u0648 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 TypeScript \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0631\u0632\u0634\u0645\u0646\u062f \u0628\u0627\u0634\u062f \u0648\u0642\u062a\u06cc:<\/p>\n<ol>\n<li>\u06a9\u0627\u0645\u0644\u0627\u064b \u0648 \u0628\u0647 \u0637\u0648\u0631 \u0645\u062f\u0627\u0648\u0645 \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a<\/li>\n<li>\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062f\u0642\u06cc\u0642 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0641\u0639\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<li>\u062a\u0639\u0627\u0631\u06cc\u0641 \u0646\u0648\u0639 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0637\u0631\u0627\u062d\u06cc \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f \u060c \u0646\u0647 \u067e\u0633 \u0627\u0632 \u0622\u0646<\/li>\n<li>\u0641\u0631\u0627\u0631 \u0641\u0631\u0627\u0631 (<code>any<\/code>\u060c \u0627\u062f\u0639\u0627\u0647\u0627\u06cc \u0646\u0648\u0639) \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1%D8%B3%D9%87%D8%A7%DB%8C%DB%8C_%D8%A7%D8%B2_%D9%85%D9%87%D8%A7%D8%AC%D8%B1%D8%AA_%D9%85%D8%AC%D8%AF%D8%AF\"><\/span>\n<p>  \u062f\u0631\u0633\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u062c\u062f\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062a\u062c\u0631\u0628\u0647 \u0645\u0646 \u062f\u0631 \u0628\u0627\u0632\u06af\u0634\u062a \u062a\u0648\u0631\u0628\u0648 \u0628\u0647 TypeScript (\u0645\u0648\u062c\u0648\u062f \u062f\u0631 github.com\/shiftyp\/ts-turbo) \u0686\u0634\u0645 \u0627\u0646\u062f\u0627\u0632 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u0628\u062d\u062b \u0628\u0647 \u0645\u0646 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 TypeScript \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc &#8211; \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 NULL \u0641\u0639\u0627\u0644 \u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062d\u062f\u0627\u0642\u0644 \u0627\u0632 <code>any<\/code>\u060c \u0648 \u062a\u0639\u0627\u0631\u06cc\u0641 \u06a9\u0627\u0645\u0644 \u0631\u0627\u0628\u0637 &#8211; \u0645\u0646 \u062a\u0648\u0627\u0646\u0633\u062a\u0645 \u0645\u0648\u0636\u0648\u0639\u0627\u062a \u0645\u062a\u0639\u062f\u062f\u06cc \u0631\u0627 \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u06a9\u0634\u0641 \u0646\u0634\u062f\u0647 \u0628\u0648\u062f\u0646\u062f \u060c \u06a9\u0634\u0641 \u0648 \u0631\u0641\u0639 \u06a9\u0646\u0645.<\/p>\n<p>\u062a\u0644\u0627\u0634 \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u062c\u062f\u062f \u0686\u0646\u062f\u06cc\u0646 \u067e\u06cc\u0634\u0631\u0641\u062a \u06a9\u0644\u06cc\u062f\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f \u06a9\u0647 TypeScript \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0646\u06af\u0627\u0645 \u0627\u062c\u0631\u0627\u06cc \u0635\u062d\u06cc\u062d \u0628\u0647 \u0648\u062c\u0648\u062f \u0622\u0648\u0631\u062f:<\/p>\n<h3><span class=\"ez-toc-section\" id=\"1_%D9%82%D8%B1%D8%A7%D8%B1%D8%AF%D8%A7%D8%AF%D9%87%D8%A7%DB%8C_%D8%B1%D8%A7%D8%A8%D8%B7_%D8%B5%D8%B1%DB%8C%D8%AD\"><\/span>\n<p>  1. \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0631\u0627\u0628\u0637 \u0635\u0631\u06cc\u062d<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u0627\u0635\u0644\u06cc \u06a9\u062f \u060c \u0631\u0627\u0628\u0637 \u0647\u0627 \u0636\u0645\u0646\u06cc \u0628\u0648\u062f\u0646\u062f. \u0628\u0627 \u0646\u06af\u0627\u0647 \u0628\u0647 \u0627\u0639\u0644\u0627\u0646 <code>session.ts<\/code> \u067e\u0631\u0648\u0646\u062f\u0647 \u060c \u062a\u0639\u0627\u0631\u06cc\u0641 \u0631\u0627\u0628\u0637 \u0645\u0646\u0627\u0633\u0628 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u0628\u06cc\u0646 \u0645\u0624\u0644\u0641\u0647 \u0647\u0627 \u0631\u0627 \u0628\u06cc\u0627\u0646 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From src\/core\/session.ts in the remigration<\/span>\n<span class=\"kr\">interface<\/span> <span class=\"nx\">PageViewDelegate<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">allowsImmediateRender<\/span><span class=\"p\">({<\/span> <span class=\"nx\">element<\/span> <span class=\"p\">}:<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">element<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Element<\/span> <span class=\"p\">},<\/span> <span class=\"nx\">options<\/span><span class=\"p\">:<\/span> <span class=\"nx\">RenderOptions<\/span><span class=\"p\">):<\/span> <span class=\"nx\">boolean<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kr\">interface<\/span> <span class=\"nx\">LinkPrefetchDelegate<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">canPrefetchRequestToLocation<\/span><span class=\"p\">(<\/span><span class=\"nx\">link<\/span><span class=\"p\">:<\/span> <span class=\"nx\">HTMLAnchorElement<\/span><span class=\"p\">,<\/span> <span class=\"nx\">location<\/span><span class=\"p\">:<\/span> <span class=\"nx\">URL<\/span><span class=\"p\">):<\/span> <span class=\"nx\">boolean<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Session<\/span> <span class=\"k\">implements<\/span> <span class=\"nx\">PageViewDelegate<\/span><span class=\"p\">,<\/span> <span class=\"nx\">LinkPrefetchDelegate<\/span><span class=\"p\">,<\/span> <span class=\"nx\">FrameRedirectorSession<\/span> <span class=\"p\">{<\/span>\n  <span class=\"c1\">\/\/ Implementation now contractually bound to fulfill these interfaces<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0648\u0642\u062a\u06cc \u06cc\u06a9\u06cc \u0627\u0632 \u0645\u0624\u0644\u0641\u0647 \u0647\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u060c \u0627\u06cc\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0647 \u062c\u0627\u06cc \u0639\u062f\u0645 \u0645\u0648\u0641\u0642\u06cc\u062a \u0645\u0631\u0645\u0648\u0632 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u060c \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B1%D8%AA%DB%8C%D8%A8_%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AC%D8%A7%D9%85%D8%B9\"><\/span>\n<p>  \u062a\u0631\u062a\u06cc\u0628. \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062d\u0627\u0644\u062a \u062c\u0627\u0645\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u0631\u0633\u0627\u0644 \u0641\u0631\u0645 \u062f\u0631 \u062a\u0648\u0631\u0628\u0648 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0627\u06cc\u0627\u0644\u062a \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u062c\u062f\u062f \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a\u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u062f\u0639\u0627\u0647\u0627\u06cc const Typecript \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u062a\u0627\u06cc\u067e \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From src\/core\/drive\/form_submission.ts in the remigration<\/span>\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">FormSubmissionState<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">initialized<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">initialized<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">requesting<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">requesting<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">waiting<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">waiting<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">receiving<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">receiving<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">stopping<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">stopping<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n  <span class=\"na\">stopped<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">stopped<\/span><span class=\"dl\">\"<\/span>\n<span class=\"p\">}<\/span> <span class=\"k\">as<\/span> <span class=\"kd\">const<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">type<\/span> <span class=\"nx\">FormSubmissionStateType<\/span> <span class=\"o\">=<\/span> <span class=\"k\">typeof<\/span> <span class=\"nx\">FormSubmissionState<\/span><span class=\"p\">[<\/span><span class=\"kr\">keyof<\/span> <span class=\"k\">typeof<\/span> <span class=\"nx\">FormSubmissionState<\/span><span class=\"p\">]<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0648\u0644\u062a \u0628\u0647 \u0635\u0648\u0631\u062a \u062c\u0627\u0645\u0639 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u0634\u0648\u062f \u0648 \u0627\u0632 \u062d\u0627\u0644\u062a \u0647\u0627\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f \u060c \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_%D8%AD%D9%81%D8%A7%D8%B8%D8%AA_%D8%A7%D8%B2_%D8%B3%D8%A7%D8%B2%DA%AF%D8%A7%D8%B1%DB%8C_%D9%85%D8%B1%D9%88%D8%B1%DA%AF%D8%B1\"><\/span>\n<p>  3. \u062d\u0641\u0627\u0638\u062a \u0627\u0632 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0645\u0631\u0648\u0631\u06af\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0645\u0647\u0627\u062c\u0631\u062a \u060c \u0646\u06cc\u0631\u0648\u0647\u0627\u06cc Typecript \u0686\u06a9 \u0647\u0627\u06cc \u0635\u0631\u06cc\u062d \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From src\/core\/drive\/history.ts in the remigration<\/span>\n<span class=\"nf\">assumeControlOfScrollRestoration<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">scrollRestoration<\/span><span class=\"dl\">\"<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">history<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">this<\/span><span class=\"p\">.<\/span><span class=\"nx\">previousScrollRestoration<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nx\">scrollRestoration<\/span>\n    <span class=\"nx\">history<\/span><span class=\"p\">.<\/span><span class=\"nx\">scrollRestoration<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">manual<\/span><span class=\"dl\">\"<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0628\u06cc\u0627\u0646 \u0627\u06cc\u0646 \u0686\u06a9 \u0647\u0627 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0646\u0648\u0639 \u060c \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 API \u0628\u0647 \u0637\u0648\u0631 \u062a\u0635\u0627\u062f\u0641\u06cc \u063a\u06cc\u0631\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631 \u0647\u0645\u0647 \u0645\u0631\u0648\u0631\u06af\u0631\u0647\u0627 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0628\u062a\u062f\u0627 \u062d\u0636\u0648\u0631 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"4_%D8%A7%DB%8C%D9%85%D9%86%DB%8C_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B4%DA%A9%DB%8C%D9%84_%D8%AF%D9%87%DB%8C%D8%AF\"><\/span>\n<p>  4. \u0627\u06cc\u0645\u0646\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u062f\u0647\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0647\u0646\u06af\u0627\u0645 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0641\u0631\u0645 \u0686\u0646\u062f\u06cc\u0646 \u0645\u0633\u0626\u0644\u0647 \u0628\u0627 \u0645\u0646\u0627\u0628\u0639 \u062a\u0647\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0634\u062a. \u0645\u0647\u0627\u062c\u0631\u062a \u0628\u0631\u0631\u0633\u06cc \u0635\u062d\u06cc\u062d \u062a\u0647\u06cc \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"c1\">\/\/ From src\/core\/drive\/form_submission.ts in the remigration<\/span>\n<span class=\"nf\">buildFormData<\/span><span class=\"p\">(<\/span><span class=\"nx\">formElement<\/span><span class=\"p\">:<\/span> <span class=\"nx\">HTMLFormElement<\/span><span class=\"p\">,<\/span> <span class=\"nx\">submitter<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">HTMLElement<\/span><span class=\"p\">):<\/span> <span class=\"nx\">FormData<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">URLSearchParams<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">formData<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">FormData<\/span><span class=\"p\">(<\/span><span class=\"nx\">formElement<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">name<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">submitter<\/span><span class=\"p\">?.<\/span><span class=\"nf\">getAttribute<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">name<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">submitter<\/span><span class=\"p\">?.<\/span><span class=\"nf\">getAttribute<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">value<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span>\n\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">name<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nx\">formData<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"nx\">name<\/span><span class=\"p\">)<\/span> <span class=\"o\">!==<\/span> <span class=\"nx\">value<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">formData<\/span><span class=\"p\">.<\/span><span class=\"nf\">append<\/span><span class=\"p\">(<\/span><span class=\"nx\">name<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span><span class=\"p\">)<\/span>\n  <span class=\"p\">}<\/span>\n\n  <span class=\"k\">return<\/span> <span class=\"nx\">formData<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u0632\u0646\u062c\u06cc\u0631\u0647 \u0627\u06cc \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc (<code>?.<\/code>) \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u0686\u06a9 \u0647\u0627\u06cc \u0635\u0641\u0631 \u0635\u0631\u06cc\u062d \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u0641\u0631\u0645 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06af\u0645\u0634\u062f\u0647 \u0642\u0648\u06cc \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%D8%A7%DB%8C%D8%A7%D9%86\"><\/span>\n<p>  \u067e\u0627\u06cc\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0647\u0627\u062c\u0631\u062a Turbo Typescript \u06cc\u06a9 \u0686\u0634\u0645 \u0627\u0646\u062f\u0627\u0632 \u0638\u0631\u06cc\u0641 \u062f\u0631 \u0645\u0648\u0631\u062f \u0628\u062d\u062b JavaScript \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 TypeScript \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f. TypeScript \u0630\u0627\u062a\u0627\u064b \u062e\u0648\u0628 \u06cc\u0627 \u0628\u062f \u0646\u06cc\u0633\u062a &#8211; \u0627\u0631\u0632\u0634 \u0622\u0646 \u06a9\u0627\u0645\u0644\u0627\u064b \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f. \u062a\u0644\u0627\u0634 \u0647\u0627\u06cc \u0645\u0647\u0627\u062c\u0631\u062a \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0635\u062d\u06cc\u062d \u060c \u0647\u0632\u06cc\u0646\u0647 \u0647\u0627 \u0648 \u0645\u0632\u0627\u06cc\u0627\u06cc Typescript \u0631\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0633\u0648\u0627\u0644 \u0627\u06cc\u0646 \u0646\u06cc\u0633\u062a \u06a9\u0647 &#8220;\u0622\u06cc\u0627 \u0628\u0627\u06cc\u062f \u0627\u0632 TypeScript \u06cc\u0627 JavaScript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061f&#8221; \u0627\u0645\u0627 &#8220;\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0645\u0627\u06cc\u0644 \u0628\u0647 \u0627\u062c\u0631\u0627\u06cc \u0635\u062d\u06cc\u062d TypeScript \u0647\u0633\u062a\u06cc\u062f\u061f&#8221; \u0627\u06af\u0631 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0686\u06a9 \u0647\u0627\u06cc \u062a\u0647\u06cc \u062f\u0642\u06cc\u0642 \u0631\u0627 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f \u060c \u0627\u0632 \u0622\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>any<\/code> \u0627\u0646\u0648\u0627\u0639 \u0622\u0632\u0627\u062f\u0627\u0646\u0647 \u0648 \u0641\u0642\u0637 \u062a\u0627 \u062d\u062f\u06cc \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627 \u0633\u0627\u062f\u06af\u06cc JavaScript \u0628\u0647\u062a\u0631 \u0628\u0627\u0634\u06cc\u062f.<\/p>\n<p>\u0627\u0639\u0644\u0627\u0645 DHH \u062f\u0631 \u0645\u0648\u0631\u062f \u0631\u0647\u0627 \u06a9\u0631\u062f\u0646 TypeScript \u0627\u0632 Turbo 8 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0645\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u062e\u0648\u062f TypeScript \u0628\u0627\u0634\u062f \u0648 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u062a\u0634\u062e\u06cc\u0635 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0648\u0631\u0628\u0648 \u0647\u0631\u06af\u0632 \u0628\u0647 TypeScript \u0641\u0631\u0635\u062a\u06cc \u0639\u0627\u062f\u0644\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0646\u062f\u0627\u062f. \u062a\u0627\u0631\u06cc\u062e \u062a\u0644\u0627\u0634 \u0647\u0627\u06cc \u0642\u0628\u0644\u06cc \u0628\u0647 \u062c\u0627\u06cc \u062f\u0631 \u0622\u063a\u0648\u0634 \u06af\u0631\u0641\u062a\u0646 \u0622\u0646\u0686\u0647 \u06a9\u0647 TypeScript \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0627\u062f \u060c \u0627\u0644\u06af\u0648\u06cc\u06cc \u0627\u0632 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0646\u06cc\u0645\u0647 \u06a9\u0627\u0631\u0647 \u0648 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u067e\u0631\u0648\u0698\u0647 \u0645\u0647\u0627\u062c\u0631\u062a \u0645\u062c\u062f\u062f \u0645\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u06af\u0631\u0641\u062a. \u0645\u0646 \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 TypeScript \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0644\u0627\u06cc\u0647 \u06cc\u0627 \u06cc\u06a9 \u0644\u0627\u06cc\u0647 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0646\u0648\u0639 \u0633\u0627\u062f\u0647 \u062f\u0631\u0645\u0627\u0646 \u06a9\u0646\u0645 \u060c \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0628\u0632\u0627\u0631 \u0637\u0631\u0627\u062d\u06cc \u0627\u0633\u0627\u0633\u06cc \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f\u0645. \u0628\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0631\u0627\u0628\u0637 \u0647\u0627\u06cc \u062f\u0642\u06cc\u0642 \u0627\u0628\u062a\u062f\u0627 \u0648 \u0633\u067e\u0633 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0622\u0646 \u0631\u0627\u0628\u0637 \u0647\u0627 \u060c TypeScript \u0628\u0647 \u062c\u0627\u06cc \u0645\u0627\u0646\u0639\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0627\u0637\u0631\u0627\u0641 \u06a9\u0627\u0631 \u0634\u0648\u062f \u060c \u0628\u0647 \u06cc\u06a9 \u0647\u0645\u06a9\u0627\u0631 \u062f\u0631 \u0641\u0631\u0622\u06cc\u0646\u062f \u062a\u0648\u0633\u0639\u0647 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f. \u0646\u062a\u06cc\u062c\u0647 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0642\u0648\u06cc \u062a\u0631 \u0628\u0627 \u0645\u0648\u0627\u0631\u062f \u0644\u0628\u0647 \u06a9\u0645\u062a\u0631\u06cc \u0648 \u0631\u0641\u062a\u0627\u0631 \u0642\u0627\u0628\u0644 \u067e\u06cc\u0634 \u0628\u06cc\u0646\u06cc \u062a\u0631 \u0628\u0648\u062f.<\/p>\n<p>\u0622\u0646\u0686\u0647 \u0628\u0647 \u0648\u06cc\u0698\u0647 \u0622\u0634\u06a9\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0686\u0646\u062f \u0645\u0633\u0626\u0644\u0647 \u0646\u0647 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0627\u0632 \u0646\u0648\u0639 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u060c \u0628\u0644\u06a9\u0647 \u0628\u0627 \u0639\u0645\u0644 \u0633\u0627\u062f\u0647 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u062f\u0646 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0635\u0631\u06cc\u062d \u0645\u0648\u0627\u0631\u062f \u0644\u0628\u0647 \u062d\u0644 \u0634\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u062e\u0637\u0627\u0647\u0627\u06cc \u0628\u0627\u0644\u0642\u0648\u0647 \u0628\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0686\u0646\u062f \u0686\u06a9 \u0635\u0641\u0631 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc\u06a9 \u06a9\u0647 TypeScript \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u062d\u0630\u0641 \u0634\u062f \u0627\u0645\u0627 JavaScript \u0627\u062c\u0631\u0627 \u0646\u06a9\u0631\u062f.<\/p>\n<p>\u0634\u0627\u06cc\u062f \u062d\u0631\u06a9\u062a \u062f\u0631\u0633\u062a \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 TypeScript \u0646\u0628\u0627\u0634\u062f \u060c \u0628\u0644\u06a9\u0647 \u0627\u062c\u0631\u0627\u06cc \u0635\u062d\u06cc\u062d \u0622\u0646 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f. \u06cc\u0627 \u0634\u0627\u06cc\u062f \u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 DHH \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u060c \u062e\u0648\u062f JavaScript \u0628\u0647 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u062a\u06a9\u0627\u0645\u0644 \u06cc\u0627\u0641\u062a\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u06cc\u0645 \u0647\u0627 \u0648 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627 \u060c \u0634\u0628\u06a9\u0647 \u0627\u06cc\u0645\u0646\u06cc \u0627\u0636\u0627\u0641\u06cc TypeScript \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u0627\u0631\u0632\u0634 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u0631\u0627 \u06a9\u0647 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc \u06a9\u0646\u062f \u060c \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>\u062a\u062c\u0631\u0628\u0647 \u0634\u0645\u0627 \u0686\u06cc\u0633\u062a\u061f \u0622\u06cc\u0627 TypeScript \u067e\u0631\u0648\u0698\u0647 \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0628\u062d\u0631\u0627\u0646\u06cc \u0646\u062c\u0627\u062a \u062f\u0627\u062f\u0647 \u0627\u0633\u062a \u060c \u06cc\u0627 \u062f\u0631 \u062f\u0631\u062c\u0647 \u0627\u0648\u0644 \u0627\u0635\u0637\u06a9\u0627\u06a9 \u0631\u0627 \u0645\u0639\u0631\u0641\u06cc \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a\u061f \u0628\u062d\u062b \u0627\u062f\u0627\u0645\u0647 \u062f\u0627\u0631\u062f \u060c \u0627\u0645\u0627 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0628\u0627 \u0638\u0631\u0627\u0641\u062a \u0628\u06cc\u0634\u062a\u0631 \u0648 \u06a9\u0645\u062a\u0631 \u063a\u06cc\u0631\u062a \u0646\u0633\u0628\u062a \u0628\u0647 \u06af\u0630\u0634\u062a\u0647.<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0633\u067e\u062a\u0627\u0645\u0628\u0631 \u0633\u0627\u0644 2023 \u060c \u062f\u06cc\u0648\u06cc\u062f \u0647\u06cc\u0646\u0645\u06cc\u06cc\u0631 \u0647\u0627\u0646\u0633\u0648\u0646 \u0627\u0639\u0644\u0627\u0645 \u06a9\u0631\u062f \u06a9\u0647 &#8220;\u062a\u0648\u0631\u0628\u0648 8 \u062f\u0631 \u062d\u0627\u0644 \u0631\u0647\u0627 \u06a9\u0631\u062f\u0646 TypeScript \u0627\u0633\u062a.&#8221; \u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u062f\u0631 \u062c\u0627\u0645\u0639\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0634\u0627\u06cc\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u062a\u06cc\u06a9 \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u067e\u0648\u06cc\u0627 \u0628\u062d\u062b \u0648 \u06af\u0641\u062a\u06af\u0648 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0686\u0627\u0631\u0686\u0648\u0628 \u062a\u0648\u0631\u0628\u0648 \u06cc\u06a9 \u0645\u0637\u0627\u0644\u0639\u0647 \u0645\u0648\u0631\u062f\u06cc \u0627\u06cc\u062f\u0647 \u0622\u0644 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0632\u06cc\u0631\u0627 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":103785,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-103784","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/103784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=103784"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/103784\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/103785"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=103784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=103784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=103784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}