{"id":10085,"date":"2021-09-09T16:55:10","date_gmt":"2021-09-09T14:55:10","guid":{"rendered":"https:\/\/vived.io\/frontend-thursday-vol-54\/"},"modified":"2022-09-19T13:16:38","modified_gmt":"2022-09-19T11:16:38","slug":"frontend-thursday-vol-54","status":"publish","type":"post","link":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/","title":{"rendered":"Frontend Thursday vol. 54"},"content":{"rendered":"\n<h1 class=\"wp-block-heading\">1. Visual Studio Code 1.60<\/h1>\n\n\n\n<p>Jak wynika z raportu&nbsp; State of JS 2020, VS Code jest IDE najcz\u0119\u015bciej u\u017cywanym przez JavaScript Developer\u00f3w (i to z pokryciem oko\u0142o 85% rynku!). W zwi\u0105zku z tym pojawienie si\u0119 nowej wersji tego edytora tekstu nie staje si\u0119 frontendowym newsem, ale z pewno\u015bci\u0105 zainteresuje spor\u0105 cz\u0119\u015b\u0107 z Was. Zw\u0142aszcza, \u017ce do nowej wersji trafi\u0142o kilka ciekawych usprawnie\u0144.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"544\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-1024x544.png\" alt=\"\" class=\"wp-image-2215\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-1024x544.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-300x159.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-768x408.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-1536x816.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-2048x1088.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Co zaskakuj\u0105ce na drugim miejscu w state of JS 2020 kategori IDE uplasowa\u0142 si\u0119 Vim. Gdyby zsumowa\u0107 g\u0142osy pod wszystkimi edytorami od JetBrains, to ze spor\u0105 przewag\u0105 zaj\u0119\u0142yby one drugi stopie\u0144 podium, ale wci\u0105\u017c by\u0142yby one oko\u0142o trzykrotnie mniej popularne od IDE Microsoftu.<\/figcaption><\/figure>\n\n\n\n<p>Najwi\u0119ksz\u0105 nowo\u015bci\u0105 w VS Code 1.60 jest automatyczne wykrywanie j\u0119zyka. Rozwi\u0105zanie dzia\u0142a bez dodatkowej konfiguracji, czy dopisywania rozszerzenia pliku. Ca\u0142o\u015b\u0107 oparta jest o sztuczn\u0105 inteligencj\u0119, ale w dobie Copilota nie robi to ju\u017c chyba takiego wra\u017cenia.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdl9b.jpeg\" alt=\"\" class=\"wp-image-2216\" width=\"548\" height=\"373\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdl9b.jpeg 735w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdl9b-300x204.jpeg 300w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><\/figure><\/div>\n\n\n\n<p>Kolejn\u0105 zmian\u0105 trafiaj\u0105c\u0105 do VS Code jest kolorowanie klamr. Co prawda, podobna funkcjonalno\u015b\u0107 by\u0142a ju\u017c dost\u0119pna przy u\u017cyciu pluginu (w ko\u0144cu VS Code znany jest ze swojego urodzaju plugin\u00f3w), ale Microsoft chwali si\u0119, \u017ce dokona\u0142 znacz\u0105cych usprawnie\u0144 wydajno\u015bci.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"309\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-1024x309.png\" alt=\"\" class=\"wp-image-2217\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-1024x309.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-300x91.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-768x232.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-1536x464.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio.png 1961w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Teraz przejd\u017amy do tego, co Frontend developer\u00f3w interesuje najbardziej, czyli funkcjonalno\u015bci dedykowanych dla JavaScript. Nowy VS Code dostarcza rozbudowany system inline suggestion (funkcjonalno\u015b\u0107 ta wspiera parametry funkcji, zwracane warto\u015bci i typy zmiennych). Opr\u00f3cz tego dostajemy r\u00f3wnie\u017c rozbudowany spelling suggestions. Jak to m\u00f3wi\u0105: bunkr\u00f3w nie ma ale i tak jest zaje****.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"202\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-1024x202.png\" alt=\"\" class=\"wp-image-2218\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-1024x202.png 1024w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-300x59.png 300w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-768x151.png 768w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-1536x302.png 1536w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-2048x403.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"480\" height=\"270\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/giphy.gif\" alt=\"\" class=\"wp-image-2219\"\/><figcaption><br>Je\u015bli dok\u0142adnie czytali\u015bcie notatk\u0119 towarzysz\u0105c\u0105 publikacji TypeScript 4.4, to mo\u017cecie teraz mie\u0107 ma\u0142e Deja Vu. Nie nale\u017cy si\u0119 jednak dziwi\u0107, bo to w\u0142a\u015bnie Language Server Protocol TypeScript jest odpowiedzialny za wi\u0119kszo\u015b\u0107 integracji mi\u0119dzy VS Code i JavaScript<\/figcaption><\/figure><\/div>\n\n\n\n<p>Oczywi\u015bcie to nie koniec zmian i nowo\u015bci w VS Code 1.60, ale je\u015bli interesuje Was pe\u0142na lista to odsy\u0142am Was do linku ze \u017ar\u00f3de\u0142.<\/p>\n\n\n\n<h2 id=\"zrodla\" data-num=1>\u0179r\u00f3d\u0142a:<\/h2>\n\n\n\n<p><a href=\"https:\/\/code.visualstudio.com\/updates\/v1_60#_inlay-hints-for-javascript-and-typescript\">https:\/\/code.visualstudio.com\/updates\/v1_60#_inlay-hints-for-javascript-and-typescript<\/a><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">2. Statyczne bloki inicjalizacji zmierzaj\u0105 do ES2022<\/h1>\n\n\n\n<p>JavaScript od dawna posiada statyczne pola, ale je\u015bli ich inicjalizacja wymaga uruchomienia kawa\u0142ka kodu, to zdani byli\u015bmy na hack z wykorzystaniem _ (przyk\u0142ad poni\u017cej). Dlaczego potrzebujemy lepszego rozwi\u0105zania problemu inicjalizacji statycznych p\u00f3l? Po pierwsze stosowane do tej pory rozwi\u0105zanie to hack, i jak wi\u0119kszo\u015b\u0107 hack\u00f3w, potrafi by\u0107 mocno nieczytelne. Po drugie, tak napisana funkcja inicjalizuj\u0105ca nie ma dost\u0119pu do prywatnych p\u00f3l w klasie bazowej.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Translator {\n  static translations = {\n    yes: &#039;ja&#039;,\n    no: &#039;nein&#039;,\n    maybe: &#039;vielleicht&#039;,\n  };\n  static englishWords = &#091;];\n  static germanWords = &#091;];\n  static _ = initializeTranslator( \/\/ (A)\n    this.translations, this.englishWords, this.germanWords);\n}\nfunction initializeTranslator(translations, englishWords, germanWords) {\n  for (const &#091;english, german] of Object.entries(translations)) {\n    englishWords.push(english);\n    germanWords.push(german);\n  }\n}<\/code><\/pre>\n\n\n\n<p>Rozwi\u0105zanie tego problemu jakie zaakceptowa\u0142o TC39, to w\u0142a\u015bnie statyczne bloki inicjalizacji, kt\u00f3re do z\u0142udzenia przypominaj\u0105 te od dawna znane z Javy. Nowe rozwi\u0105zanie dost\u0119pne jest ju\u017c w TypeScript 4.4 i V8 od wersji 93, a ze wzgl\u0119du na osi\u0105gni\u0119cie konsensusu przez starszyzn\u0119 JavaScriptu nale\u017cy spodziewa\u0107 si\u0119, \u017ce funkcjonalno\u015b\u0107 ta wkr\u00f3tce trafi r\u00f3wnie\u017c do Firefoxa i Safari.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Translator {\n  static translations = {\n    yes: &#039;ja&#039;,\n    no: &#039;nein&#039;,\n    maybe: &#039;vielleicht&#039;,\n  };\n  static englishWords = &#091;];\n  static germanWords = &#091;];\n  static { \/\/ (A)\n    for (const &#091;english, german] of Object.entries(this.translations)) {\n      this.englishWords.push(english);\n      this.germanWords.push(german);\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"559\" src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdljh.jpeg\" alt=\"\" class=\"wp-image-2220\" srcset=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdljh.jpeg 500w, https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdljh-268x300.jpeg 268w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/figure><\/div>\n\n\n\n<h2 id=\"zrodla\" data-num=2>\u0179r\u00f3d\u0142a:<\/h2>\n\n\n\n<p><a href=\"https:\/\/2ality.com\/2021\/09\/class-static-block.html\">https:\/\/2ality.com\/2021\/09\/class-static-block.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W dzisiejszej edycji mamy dla informacje o nowym VS Code i pierwsze przecieki dotycz\u0105ce ES2022.<\/p>\n","protected":false},"author":12,"featured_media":7686,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[273],"tags":[],"class_list":["post-10085","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend-pl"],"acf":{"estimated_reading_time":"2","weekly_summary":true},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Frontend Thursday vol. 54 - Vived<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Frontend Thursday vol. 54 - Vived\" \/>\n<meta property=\"og:description\" content=\"W dzisiejszej edycji mamy dla informacje o nowym VS Code i pierwsze przecieki dotycz\u0105ce ES2022.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\" \/>\n<meta property=\"og:site_name\" content=\"Vived\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-09T14:55:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-09-19T11:16:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png\" \/>\n\t<meta property=\"og:image:width\" content=\"3360\" \/>\n\t<meta property=\"og:image:height\" content=\"1754\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Tomasz Borowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\"},\"author\":{\"name\":\"Tomasz Borowicz\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\"},\"headline\":\"Frontend Thursday vol. 54\",\"datePublished\":\"2021-09-09T14:55:10+00:00\",\"dateModified\":\"2022-09-19T11:16:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\"},\"wordCount\":507,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png\",\"articleSection\":[\"Frontend\"],\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\",\"url\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\",\"name\":\"Frontend Thursday vol. 54 - Vived\",\"isPartOf\":{\"@id\":\"https:\/\/vived.io\/pl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png\",\"datePublished\":\"2021-09-09T14:55:10+00:00\",\"dateModified\":\"2022-09-19T11:16:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png\",\"width\":3360,\"height\":1754},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\/\/vived.io\/pl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend Thursday vol. 54\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vived.io\/pl\/#website\",\"url\":\"https:\/\/vived.io\/pl\/\",\"name\":\"Vived\",\"description\":\"platform empowering IT people and technology companies to synergic growth\",\"publisher\":{\"@id\":\"https:\/\/vived.io\/pl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vived.io\/pl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vived.io\/pl\/#organization\",\"name\":\"Vived\",\"url\":\"https:\/\/vived.io\/pl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"contentUrl\":\"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png\",\"width\":136,\"height\":45,\"caption\":\"Vived\"},\"image\":{\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb\",\"name\":\"Tomasz Borowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g\",\"caption\":\"Tomasz Borowicz\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Frontend Thursday vol. 54 - Vived","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/","og_locale":"pl_PL","og_type":"article","og_title":"Frontend Thursday vol. 54 - Vived","og_description":"W dzisiejszej edycji mamy dla informacje o nowym VS Code i pierwsze przecieki dotycz\u0105ce ES2022.","og_url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/","og_site_name":"Vived","article_published_time":"2021-09-09T14:55:10+00:00","article_modified_time":"2022-09-19T11:16:38+00:00","og_image":[{"width":3360,"height":1754,"url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png","type":"image\/png"}],"author":"Tomasz Borowicz","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#article","isPartOf":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/"},"author":{"name":"Tomasz Borowicz","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb"},"headline":"Frontend Thursday vol. 54","datePublished":"2021-09-09T14:55:10+00:00","dateModified":"2022-09-19T11:16:38+00:00","mainEntityOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/"},"wordCount":507,"commentCount":0,"publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png","articleSection":["Frontend"],"inLanguage":"pl-PL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/","url":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/","name":"Frontend Thursday vol. 54 - Vived","isPartOf":{"@id":"https:\/\/vived.io\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage"},"image":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage"},"thumbnailUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png","datePublished":"2021-09-09T14:55:10+00:00","dateModified":"2022-09-19T11:16:38+00:00","breadcrumb":{"@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#primaryimage","url":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/Screenshot-2021-09-09-at-16.51.27.png","width":3360,"height":1754},{"@type":"BreadcrumbList","@id":"https:\/\/vived.io\/pl\/frontend-thursday-vol-54\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/vived.io\/pl\/"},{"@type":"ListItem","position":2,"name":"Frontend Thursday vol. 54"}]},{"@type":"WebSite","@id":"https:\/\/vived.io\/pl\/#website","url":"https:\/\/vived.io\/pl\/","name":"Vived","description":"platform empowering IT people and technology companies to synergic growth","publisher":{"@id":"https:\/\/vived.io\/pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vived.io\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/vived.io\/pl\/#organization","name":"Vived","url":"https:\/\/vived.io\/pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/","url":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","contentUrl":"https:\/\/vived.io\/wp-content\/uploads\/2020\/03\/logo_vived_color.png","width":136,"height":45,"caption":"Vived"},"image":{"@id":"https:\/\/vived.io\/pl\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/9d2a72fe7d0dfbb4092675afbab742bb","name":"Tomasz Borowicz","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/vived.io\/pl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/804536d2672538508d43f60ad2108e5aaea76c192653eaf95d4c3934b7d1dbb6?s=96&d=mm&r=g","caption":"Tomasz Borowicz"}}]}},"blocks_vived":[{"blockName":"core\/heading","attrs":{"level":1},"innerBlocks":[],"innerHTML":"\n<h1>1. Visual Studio Code 1.60<\/h1>\n","innerContent":["\n<h1>1. Visual Studio Code 1.60<\/h1>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Jak wynika z raportu&nbsp; State of JS 2020, VS Code jest IDE najcz\u0119\u015bciej u\u017cywanym przez JavaScript Developer\u00f3w (i to z pokryciem oko\u0142o 85% rynku!). W zwi\u0105zku z tym pojawienie si\u0119 nowej wersji tego edytora tekstu nie staje si\u0119 frontendowym newsem, ale z pewno\u015bci\u0105 zainteresuje spor\u0105 cz\u0119\u015b\u0107 z Was. Zw\u0142aszcza, \u017ce do nowej wersji trafi\u0142o kilka ciekawych usprawnie\u0144.<\/p>\n","innerContent":["\n<p>Jak wynika z raportu&nbsp; State of JS 2020, VS Code jest IDE najcz\u0119\u015bciej u\u017cywanym przez JavaScript Developer\u00f3w (i to z pokryciem oko\u0142o 85% rynku!). W zwi\u0105zku z tym pojawienie si\u0119 nowej wersji tego edytora tekstu nie staje si\u0119 frontendowym newsem, ale z pewno\u015bci\u0105 zainteresuje spor\u0105 cz\u0119\u015b\u0107 z Was. Zw\u0142aszcza, \u017ce do nowej wersji trafi\u0142o kilka ciekawych usprawnie\u0144.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":2215,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-1024x544.png\" alt=\"\" class=\"wp-image-2215\"\/><figcaption>Co zaskakuj\u0105ce na drugim miejscu w state of JS 2020 kategori IDE uplasowa\u0142 si\u0119 Vim. Gdyby zsumowa\u0107 g\u0142osy pod wszystkimi edytorami od JetBrains, to ze spor\u0105 przewag\u0105 zaj\u0119\u0142yby one drugi stopie\u0144 podium, ale wci\u0105\u017c by\u0142yby one oko\u0142o trzykrotnie mniej popularne od IDE Microsoftu.<\/figcaption><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/text_editors-1024x544.png\" alt=\"\" class=\"wp-image-2215\"\/><figcaption>Co zaskakuj\u0105ce na drugim miejscu w state of JS 2020 kategori IDE uplasowa\u0142 si\u0119 Vim. Gdyby zsumowa\u0107 g\u0142osy pod wszystkimi edytorami od JetBrains, to ze spor\u0105 przewag\u0105 zaj\u0119\u0142yby one drugi stopie\u0144 podium, ale wci\u0105\u017c by\u0142yby one oko\u0142o trzykrotnie mniej popularne od IDE Microsoftu.<\/figcaption><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Najwi\u0119ksz\u0105 nowo\u015bci\u0105 w VS Code 1.60 jest automatyczne wykrywanie j\u0119zyka. Rozwi\u0105zanie dzia\u0142a bez dodatkowej konfiguracji, czy dopisywania rozszerzenia pliku. Ca\u0142o\u015b\u0107 oparta jest o sztuczn\u0105 inteligencj\u0119, ale w dobie Copilota nie robi to ju\u017c chyba takiego wra\u017cenia.<\/p>\n","innerContent":["\n<p>Najwi\u0119ksz\u0105 nowo\u015bci\u0105 w VS Code 1.60 jest automatyczne wykrywanie j\u0119zyka. Rozwi\u0105zanie dzia\u0142a bez dodatkowej konfiguracji, czy dopisywania rozszerzenia pliku. Ca\u0142o\u015b\u0107 oparta jest o sztuczn\u0105 inteligencj\u0119, ale w dobie Copilota nie robi to ju\u017c chyba takiego wra\u017cenia.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":2216,"width":548,"height":373,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdl9b.jpeg\" alt=\"\" class=\"wp-image-2216\" width=\"548\" height=\"373\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full is-resized\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdl9b.jpeg\" alt=\"\" class=\"wp-image-2216\" width=\"548\" height=\"373\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Kolejn\u0105 zmian\u0105 trafiaj\u0105c\u0105 do VS Code jest kolorowanie klamr. Co prawda, podobna funkcjonalno\u015b\u0107 by\u0142a ju\u017c dost\u0119pna przy u\u017cyciu pluginu (w ko\u0144cu VS Code znany jest ze swojego urodzaju plugin\u00f3w), ale Microsoft chwali si\u0119, \u017ce dokona\u0142 znacz\u0105cych usprawnie\u0144 wydajno\u015bci.<\/p>\n","innerContent":["\n<p>Kolejn\u0105 zmian\u0105 trafiaj\u0105c\u0105 do VS Code jest kolorowanie klamr. Co prawda, podobna funkcjonalno\u015b\u0107 by\u0142a ju\u017c dost\u0119pna przy u\u017cyciu pluginu (w ko\u0144cu VS Code znany jest ze swojego urodzaju plugin\u00f3w), ale Microsoft chwali si\u0119, \u017ce dokona\u0142 znacz\u0105cych usprawnie\u0144 wydajno\u015bci.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":2217,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-1024x309.png\" alt=\"\" class=\"wp-image-2217\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/bracket-pair-colorization-on-off.drawio-1024x309.png\" alt=\"\" class=\"wp-image-2217\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Teraz przejd\u017amy do tego, co Frontend developer\u00f3w interesuje najbardziej, czyli funkcjonalno\u015bci dedykowanych dla JavaScript. Nowy VS Code dostarcza rozbudowany system inline suggestion (funkcjonalno\u015b\u0107 ta wspiera parametry funkcji, zwracane warto\u015bci i typy zmiennych). Opr\u00f3cz tego dostajemy r\u00f3wnie\u017c rozbudowany spelling suggestions. Jak to m\u00f3wi\u0105: bunkr\u00f3w nie ma ale i tak jest zaje****.<\/p>\n","innerContent":["\n<p>Teraz przejd\u017amy do tego, co Frontend developer\u00f3w interesuje najbardziej, czyli funkcjonalno\u015bci dedykowanych dla JavaScript. Nowy VS Code dostarcza rozbudowany system inline suggestion (funkcjonalno\u015b\u0107 ta wspiera parametry funkcji, zwracane warto\u015bci i typy zmiennych). Opr\u00f3cz tego dostajemy r\u00f3wnie\u017c rozbudowany spelling suggestions. Jak to m\u00f3wi\u0105: bunkr\u00f3w nie ma ale i tak jest zaje****.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"id":2218,"sizeSlug":"large","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-1024x202.png\" alt=\"\" class=\"wp-image-2218\"\/><\/figure>\n","innerContent":["\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/ts-inlay-parameters-1024x202.png\" alt=\"\" class=\"wp-image-2218\"\/><\/figure>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":2219,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/giphy.gif\" alt=\"\" class=\"wp-image-2219\"\/><figcaption><br>Je\u015bli dok\u0142adnie czytali\u015bcie notatk\u0119 towarzysz\u0105c\u0105 publikacji TypeScript 4.4, to mo\u017cecie teraz mie\u0107 ma\u0142e Deja Vu. Nie nale\u017cy si\u0119 jednak dziwi\u0107, bo to w\u0142a\u015bnie Language Server Protocol TypeScript jest odpowiedzialny za wi\u0119kszo\u015b\u0107 integracji mi\u0119dzy VS Code i JavaScript<\/figcaption><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/giphy.gif\" alt=\"\" class=\"wp-image-2219\"\/><figcaption><br>Je\u015bli dok\u0142adnie czytali\u015bcie notatk\u0119 towarzysz\u0105c\u0105 publikacji TypeScript 4.4, to mo\u017cecie teraz mie\u0107 ma\u0142e Deja Vu. Nie nale\u017cy si\u0119 jednak dziwi\u0107, bo to w\u0142a\u015bnie Language Server Protocol TypeScript jest odpowiedzialny za wi\u0119kszo\u015b\u0107 integracji mi\u0119dzy VS Code i JavaScript<\/figcaption><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Oczywi\u015bcie to nie koniec zmian i nowo\u015bci w VS Code 1.60, ale je\u015bli interesuje Was pe\u0142na lista to odsy\u0142am Was do linku ze \u017ar\u00f3de\u0142.<\/p>\n","innerContent":["\n<p>Oczywi\u015bcie to nie koniec zmian i nowo\u015bci w VS Code 1.60, ale je\u015bli interesuje Was pe\u0142na lista to odsy\u0142am Was do linku ze \u017ar\u00f3de\u0142.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>\u0179r\u00f3d\u0142a:<\/h2>\n","innerContent":["\n<h2>\u0179r\u00f3d\u0142a:<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/code.visualstudio.com\/updates\/v1_60#_inlay-hints-for-javascript-and-typescript\">https:\/\/code.visualstudio.com\/updates\/v1_60#_inlay-hints-for-javascript-and-typescript<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/code.visualstudio.com\/updates\/v1_60#_inlay-hints-for-javascript-and-typescript\">https:\/\/code.visualstudio.com\/updates\/v1_60#_inlay-hints-for-javascript-and-typescript<\/a><\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":{"level":1},"innerBlocks":[],"innerHTML":"\n<h1>2. Statyczne bloki inicjalizacji zmierzaj\u0105 do ES2022<\/h1>\n","innerContent":["\n<h1>2. Statyczne bloki inicjalizacji zmierzaj\u0105 do ES2022<\/h1>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>JavaScript od dawna posiada statyczne pola, ale je\u015bli ich inicjalizacja wymaga uruchomienia kawa\u0142ka kodu, to zdani byli\u015bmy na hack z wykorzystaniem _ (przyk\u0142ad poni\u017cej). Dlaczego potrzebujemy lepszego rozwi\u0105zania problemu inicjalizacji statycznych p\u00f3l? Po pierwsze stosowane do tej pory rozwi\u0105zanie to hack, i jak wi\u0119kszo\u015b\u0107 hack\u00f3w, potrafi by\u0107 mocno nieczytelne. Po drugie, tak napisana funkcja inicjalizuj\u0105ca nie ma dost\u0119pu do prywatnych p\u00f3l w klasie bazowej.<\/p>\n","innerContent":["\n<p>JavaScript od dawna posiada statyczne pola, ale je\u015bli ich inicjalizacja wymaga uruchomienia kawa\u0142ka kodu, to zdani byli\u015bmy na hack z wykorzystaniem _ (przyk\u0142ad poni\u017cej). Dlaczego potrzebujemy lepszego rozwi\u0105zania problemu inicjalizacji statycznych p\u00f3l? Po pierwsze stosowane do tej pory rozwi\u0105zanie to hack, i jak wi\u0119kszo\u015b\u0107 hack\u00f3w, potrafi by\u0107 mocno nieczytelne. Po drugie, tak napisana funkcja inicjalizuj\u0105ca nie ma dost\u0119pu do prywatnych p\u00f3l w klasie bazowej.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>class Translator {\n  static translations = {\n    yes: 'ja',\n    no: 'nein',\n    maybe: 'vielleicht',\n  };\n  static englishWords = &#91;];\n  static germanWords = &#91;];\n  static _ = initializeTranslator( \/\/ (A)\n    this.translations, this.englishWords, this.germanWords);\n}\nfunction initializeTranslator(translations, englishWords, germanWords) {\n  for (const &#91;english, german] of Object.entries(translations)) {\n    englishWords.push(english);\n    germanWords.push(german);\n  }\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>class Translator {\n  static translations = {\n    yes: 'ja',\n    no: 'nein',\n    maybe: 'vielleicht',\n  };\n  static englishWords = &#91;];\n  static germanWords = &#91;];\n  static _ = initializeTranslator( \/\/ (A)\n    this.translations, this.englishWords, this.germanWords);\n}\nfunction initializeTranslator(translations, englishWords, germanWords) {\n  for (const &#91;english, german] of Object.entries(translations)) {\n    englishWords.push(english);\n    germanWords.push(german);\n  }\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p>Rozwi\u0105zanie tego problemu jakie zaakceptowa\u0142o TC39, to w\u0142a\u015bnie statyczne bloki inicjalizacji, kt\u00f3re do z\u0142udzenia przypominaj\u0105 te od dawna znane z Javy. Nowe rozwi\u0105zanie dost\u0119pne jest ju\u017c w TypeScript 4.4 i V8 od wersji 93, a ze wzgl\u0119du na osi\u0105gni\u0119cie konsensusu przez starszyzn\u0119 JavaScriptu nale\u017cy spodziewa\u0107 si\u0119, \u017ce funkcjonalno\u015b\u0107 ta wkr\u00f3tce trafi r\u00f3wnie\u017c do Firefoxa i Safari.<\/p>\n","innerContent":["\n<p>Rozwi\u0105zanie tego problemu jakie zaakceptowa\u0142o TC39, to w\u0142a\u015bnie statyczne bloki inicjalizacji, kt\u00f3re do z\u0142udzenia przypominaj\u0105 te od dawna znane z Javy. Nowe rozwi\u0105zanie dost\u0119pne jest ju\u017c w TypeScript 4.4 i V8 od wersji 93, a ze wzgl\u0119du na osi\u0105gni\u0119cie konsensusu przez starszyzn\u0119 JavaScriptu nale\u017cy spodziewa\u0107 si\u0119, \u017ce funkcjonalno\u015b\u0107 ta wkr\u00f3tce trafi r\u00f3wnie\u017c do Firefoxa i Safari.<\/p>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/code","attrs":[],"innerBlocks":[],"innerHTML":"\n<pre class=\"wp-block-code\"><code>class Translator {\n  static translations = {\n    yes: 'ja',\n    no: 'nein',\n    maybe: 'vielleicht',\n  };\n  static englishWords = &#91;];\n  static germanWords = &#91;];\n  static { \/\/ (A)\n    for (const &#91;english, german] of Object.entries(this.translations)) {\n      this.englishWords.push(english);\n      this.germanWords.push(german);\n    }\n  }\n}<\/code><\/pre>\n","innerContent":["\n<pre class=\"wp-block-code\"><code>class Translator {\n  static translations = {\n    yes: 'ja',\n    no: 'nein',\n    maybe: 'vielleicht',\n  };\n  static englishWords = &#91;];\n  static germanWords = &#91;];\n  static { \/\/ (A)\n    for (const &#91;english, german] of Object.entries(this.translations)) {\n      this.englishWords.push(english);\n      this.germanWords.push(german);\n    }\n  }\n}<\/code><\/pre>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/image","attrs":{"align":"center","id":2220,"sizeSlug":"full","linkDestination":"none"},"innerBlocks":[],"innerHTML":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdljh.jpeg\" alt=\"\" class=\"wp-image-2220\"\/><\/figure><\/div>\n","innerContent":["\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img src=\"https:\/\/vived.io\/wp-content\/uploads\/2021\/09\/5mdljh.jpeg\" alt=\"\" class=\"wp-image-2220\"\/><\/figure><\/div>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/heading","attrs":[],"innerBlocks":[],"innerHTML":"\n<h2>\u0179r\u00f3d\u0142a:<\/h2>\n","innerContent":["\n<h2>\u0179r\u00f3d\u0142a:<\/h2>\n"]},{"blockName":null,"attrs":[],"innerBlocks":[],"innerHTML":"\n\n","innerContent":["\n\n"]},{"blockName":"core\/paragraph","attrs":[],"innerBlocks":[],"innerHTML":"\n<p><a href=\"https:\/\/2ality.com\/2021\/09\/class-static-block.html\">https:\/\/2ality.com\/2021\/09\/class-static-block.html<\/a><\/p>\n","innerContent":["\n<p><a href=\"https:\/\/2ality.com\/2021\/09\/class-static-block.html\">https:\/\/2ality.com\/2021\/09\/class-static-block.html<\/a><\/p>\n"]}],"_links":{"self":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10085","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/comments?post=10085"}],"version-history":[{"count":1,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10085\/revisions"}],"predecessor-version":[{"id":10623,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/posts\/10085\/revisions\/10623"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media\/7686"}],"wp:attachment":[{"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/media?parent=10085"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/categories?post=10085"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vived.io\/pl\/wp-json\/wp\/v2\/tags?post=10085"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}