{"id":232301,"date":"2023-01-12T18:11:00","date_gmt":"2023-01-12T15:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=232301"},"modified":"2022-11-10T08:34:56","modified_gmt":"2022-11-10T05:34:56","slug":"5-syytae-miksi-deno-lopettaa-typescriptin-kaeytoen","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/5-syytae-miksi-deno-lopettaa-typescriptin-kaeytoen\/","title":{"rendered":"5 syyt\u00e4, miksi Deno lopettaa TypeScriptin k\u00e4yt\u00f6n"},"content":{"rendered":"<p>T\u00e4n\u00e4\u00e4n ilmestyi asiakirja, joka osoitti, ett\u00e4 Deno lopettaa TypeScriptin k\u00e4yt\u00f6n sis\u00e4isess\u00e4 koodissaan vedoten useisiin nykyisen ymp\u00e4rist\u00f6n ongelmiin. Mainittuja ongelmia ovat muun muassa TypeScriptin k\u00e4\u00e4nn\u00f6sajat, strukturointi ja koodin organisointi. Jatkossa Deno k\u00e4ytt\u00e4\u00e4 puhdasta JavaScripti\u00e4 sis\u00e4isess\u00e4 koodissaan.<\/p>\n<h2>Deno ongelmia TypeScriptin kanssa<\/h2>\n<p>Ep\u00e4suotuisat tilanteet, joita Deno-tiimi t\u00e4ll\u00e4 hetkell\u00e4 kokee k\u00e4ytt\u00e4ess\u00e4\u00e4n <a href=\"https:\/\/startfunction.com\/tag\/typescript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">TypeScripti\u00e4<\/a> sis\u00e4isess\u00e4 koodissaan:<\/p>\n<ul>\n<li>\n<p>TypeScript-k\u00e4\u00e4nn\u00f6saika, kun tiedostojen vaihtaminen kest\u00e4\u00e4 useita minuutteja, mik\u00e4 tekee jatkuvasta k\u00e4\u00e4nt\u00e4misest\u00e4 tuskallisen hidasta prosessia<\/p>\n<\/li>\n<li>\n<p>Typescript-rakenne, jota he k\u00e4ytt\u00e4v\u00e4t l\u00e4hdetiedostoissa, jotka luovat varsinaisen Deno-suoritettavan tiedoston, ja k\u00e4ytt\u00e4j\u00e4kohtaisissa API:issa aiheuttaa ajonaikaisia \u200b\u200bsuorituskykyongelmia.<\/p>\n<\/li>\n<li>\n<p>TypeScript ei ole osoittautunut hy\u00f6dylliseksi Deno-koodin j\u00e4rjest\u00e4misess\u00e4. P\u00e4invastoin, Deno-tiimi kokee p\u00e4invastaisen vaikutuksen. Yksi mainituista ongelmista on, ett\u00e4 he p\u00e4\u00e4tyiv\u00e4t p\u00e4\u00e4llekk\u00e4isiin itsen\u00e4isiin Body-luokkiin kahdessa paikassa <a href=\"https:\/\/github.com\/denoland\/deno\/issues\/4748\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/github.com\/denoland\/deno\/issues\/4748<\/a><\/p>\n<\/li>\n<li>\n<p>Sis\u00e4inen koodi ja ajonaikaiset TypeScript-ilmoitukset on pidett\u00e4v\u00e4 manuaalisesti synkronoituna, koska TypeScript-k\u00e4\u00e4nt\u00e4j\u00e4 ei auta luomaan d.ts-tiedostoja<\/p>\n<\/li>\n<li>\n<p>He yll\u00e4pit\u00e4v\u00e4t kahta TS-k\u00e4\u00e4nt\u00e4j\u00e4is\u00e4nt\u00e4: yksi sis\u00e4iselle Deno-koodille ja toinen ulkoiselle k\u00e4ytt\u00e4j\u00e4koodille, vaikka molemmilla on samanlainen tavoite<\/p>\n<\/li>\n<\/ul>\n<h2>TypeScriptin poistaminen sis\u00e4isest\u00e4 Deno-koodista<\/h2>\n<p>Deno <a href=\"https:\/\/startfunction.com\/tag\/deno\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">&#8211;<\/a> tiimi pyrkii poistamaan kaiken rakennusaikaisen TS-tyyppitarkistuksen ja sis\u00e4isen Deno-koodin niputtamisen. He odottavat innolla kaiken ajonaikaisen koodin siirt\u00e4mist\u00e4 yhdeksi <a href=\"https:\/\/startfunction.com\/category\/javascript\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">JavaScript<\/a> &#8211; tiedostoksi. He k\u00e4ytt\u00e4v\u00e4t kuitenkin edelleen t\u00e4ydent\u00e4v\u00e4\u00e4 d.ts-tiedostoa tyyppim\u00e4\u00e4ritelmien ja dokumenttien s\u00e4ilytt\u00e4miseen.<\/p>\n<p>On syyt\u00e4 mainita, ett\u00e4 Deno lopettaa TypeScriptin k\u00e4yt\u00f6n vain sis\u00e4isess\u00e4 Deno-koodissa: Deno-k\u00e4ytt\u00e4j\u00e4koodi on edelleen TypeScriptiss\u00e4 ja siten tyyppitarkistettu.<\/p>\n<p>Vaikka TypeScriptia pidet\u00e4\u00e4n joskus JavaScriptin paranneltu versiona, t\u00e4m\u00e4 tapaus osoittaa, ett\u00e4 se ei itse asiassa ole sit\u00e4. Siin\u00e4 on puutteita, kuten kaikissa muissakin kieleiss\u00e4. Yksi t\u00e4rkeimmist\u00e4 on sen hidas kokoamisaika. Vaikka pienet projektit eiv\u00e4t v\u00e4ltt\u00e4m\u00e4tt\u00e4 n\u00e4e valtavaa piikki\u00e4 k\u00e4\u00e4nn\u00f6sajassa vaihdettaessa puhtaasta JavaScriptist\u00e4 TypeScriptiin, se on havaittavissa suurissa projekteissa, kuten monimutkaisessa <a href=\"https:\/\/startfunction.com\/tag\/react\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">React<\/a> &#8211; sovelluksessa. Kun otetaan huomioon sen suoritusajan suuri koko, ei ole yll\u00e4tt\u00e4v\u00e4\u00e4, ett\u00e4 Deno lopettaa TypeScriptin k\u00e4yt\u00f6n.<\/p>\n<p>Tyyppitarkastuksen turvallisuudesta kehitysvaiheessa on hintansa k\u00e4\u00e4nn\u00f6shetkell\u00e4. Ei ole syyt\u00e4, ett\u00e4 TypeScript-projektissa on laaja asiakirja k\u00e4\u00e4nn\u00f6sajan k\u00e4sittelemisest\u00e4 ja <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/wiki\/Performance\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">parantamisesta<\/a>. Yksi mielenkiintoisimmista l\u00e4hestymistavoista on k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/www.typescriptlang.org\/docs\/handbook\/project-references.html\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Project References -sovellusta<\/a>, jonka avulla kehitt\u00e4j\u00e4t voivat hajottaa suuren TypeScript-koodin pienemmiksi paloiksi.<\/p>\n<h2>Lue lis\u00e4\u00e4 siit\u00e4, miksi Deno lopettaa TypeScriptin k\u00e4yt\u00f6n<\/h2>\n<p>T\u00e4ydellinen keskustelu p\u00e4\u00e4t\u00f6ksest\u00e4 j\u00e4tt\u00e4\u00e4 TypeScript pois sis\u00e4isest\u00e4 Deno-koodista ja k\u00e4ytt\u00e4\u00e4 JavaScripti\u00e4 sen sijaan l\u00f6ytyy <a href=\"https:\/\/docs.google.com\/document\/d\/1_WvwHl7BXUPmoiSeD8G83JmS8ypsTPqed4Btkqkn_-4\/preview?pru=AAABcrrKL5k*nQ4LS569NsRRAce2BVanXw#\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4st\u00e4 asiakirjasta<\/a>, jossa Ryan Dahl ja yhteisty\u00f6kumppanit keskustelevat ongelmasta, sen ratkaisusta ja siit\u00e4, miten se aiotaan toteuttaa.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/startfunction.com\" class=\"external external_icon\">startfunction.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deno lopettaa TypeScriptin k\u00e4yt\u00f6n useiden ongelmien, kuten hitaan k\u00e4\u00e4nn\u00f6sajan, j\u00e4lkeen.<\/p>\n","protected":false},"author":1,"featured_media":157627,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[750,730,719,895,834,843],"tags":[1166],"class_list":["post-232301","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avoin-laehdekoodi","category-javascript-5","category-kehittaejae","category-koodi","category-opas-aloittelijoille","category-opetusohjelmia","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/232301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=232301"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/232301\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/157627"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=232301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=232301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=232301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}