{"id":314275,"date":"2020-12-03T21:00:20","date_gmt":"2020-12-03T21:00:20","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=314275"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=314275","title":{"rendered":"\u0422\u0430\u0439\u043f\u0421\u043a\u0440\u0438\u043f: \u041e\u0445 \u0443\u0436 \u044d\u0442\u0430 \u0432\u0435\u0441\u0451\u043b\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0442\u0438\u043f\u043e\u0432"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u044f, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <a href=\"https:\/\/github.com\/cevek\" rel=\"nofollow\">\u0410\u0440\u0442\u0443\u0440\u043e\u043c \u041c\u0443\u043a\u043c\u0438\u043d\u043e\u0432\u044b\u043c<\/a>, \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0432\u043e\u0440\u043a\u0448\u043e\u043f, \u0433\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b <a href=\"https:\/\/github.com\/nin-jin\/tdtd\" rel=\"nofollow\">\u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0442\u0438\u043f\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a>. \u042d\u0442\u043e 2 \u0447\u0430\u0441\u0430 \u0441\u0443\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0438\u043f\u0430\u0445. \u0422\u0430\u043a \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u0437\u0435\u0440\u0430, \u043b\u043e\u0432\u0438\u0442\u0435 \u0440\u0430\u0437\u0431\u043e\u0440 \u043a\u0443\u0440\u044c\u0451\u0437\u043e\u0432 \u0442\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5t\/k3\/c6\/5tk3c6ersy8tehcgylcomegjy5s.png\"><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"otnosheniya---eto-slozhno\">\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e<\/h1>\n<p>  <\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0442\u0438\u043f\u043e\u0442\u0435\u0440\u043d\u0430\u0440\u043d\u0438\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type IsAExtendsB = A extends B ? true : false<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0430 \u0432\u043e\u0440\u043a\u0448\u043e\u043f\u0435 \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0442\u0438\u043f\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u044e Classify, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0443\u044e 2 \u0442\u0438\u043f\u0430 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0443\u044e \u043e\u0434\u043d\u043e \u0438\u0437 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>[ A, '&lt;:', B ]<\/code> \u2014 A \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u0438\u043c \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c B.<\/li>\n<li><code>[ A, ':&gt;', B ]<\/code> \u2014 B \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u0433\u0438\u043c \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c A.<\/li>\n<li><code>[ A, '==', B ]<\/code> \u2014 \u041e\u0431\u0430 \u0442\u0438\u043f\u0430 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 (\u043d\u043e \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0442\u0438\u043f\u0430\u043c\u0438).<\/li>\n<li><code>[ A, '!=', B ]<\/code> \u2014 \u041d\u0438 \u043e\u0434\u0438\u043d \u0442\u0438\u043f \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043c\u044b \u0437\u0430\u043f\u0438\u043b\u0438\u043b\u0438 \u0442\u0438\u043f\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 Equal \u0438 Assert, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c \u0442\u0438\u043f\u044b \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e, \u0441\u0447\u0438\u0442\u0430\u0435\u0442 \u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u0432\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0442\u0438\u043f\u0430 \u043f\u043e\u0434\u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442. Assert \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0435\u0449\u0451 \u0438 \u0432\u0430\u043b\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u0442\u0438\u043f\u043e\u0432, \u0435\u0441\u043b\u0438 \u0442\u0438\u043f\u044b \u0432\u0434\u0440\u0443\u0433 \u043d\u0435 \u0441\u043e\u0432\u043f\u0430\u043b\u0438.<\/p>\n<p>  <\/p>\n<h1 id=\"vsyo-est-obekty-no-eto-ne-tochno\">\u0412\u0441\u0451 \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b! \u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0447\u043d\u043e..<\/h1>\n<p>  <\/p>\n<p>\u041d\u0443 \u0438 \u043f\u0435\u0440\u0432\u044b\u0439 \u0436\u0435 \u043f\u0440\u0438\u043a\u043e\u043b \u2014 <code>Object<\/code> \u0438 <code>object<\/code> \u2014 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b, \u0438\u0431\u043e \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u0430\u043c\u0438 \u043f\u0435\u0440\u0432\u043e\u0433\u043e, \u043d\u043e \u043d\u0435 \u0432\u0442\u043e\u0440\u043e\u0433\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type boolean_is_Object = Assert&lt;     boolean extends Object ? true : false,     true &gt;  type boolean_is_not_object = Assert&lt;     boolean extends object ? true : false,     false &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u0435\u0441\u043b\u0438 \u043c\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u043c \u0438\u0445, \u0442\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u0441\u044f, \u0447\u0442\u043e \u043e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u0430\u043c\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type Object_vs_object = Assert&lt;     Classify&lt; Object, object &gt;,     [ Object, '==', object ] &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0442\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0440\u0430\u043d\u0437\u0438\u0442\u0438\u0432\u043d\u044b\u043c: \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d \u0442\u0438\u043f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>boolean<\/code>) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Object<\/code>), \u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u2014 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>object<\/code>), \u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u0432\u0441\u0435 \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u2014 \u044d\u0442\u043e \u043d\u0430\u0434\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e.<\/p>\n<p>  <\/p>\n<p>\u041d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435, \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u0440\u0430\u0441\u043a\u0440\u0430\u0448\u0435\u043d\u044b \u0432 \u0433\u043e\u043b\u0443\u0431\u043e\u0439 \u0446\u0432\u0435\u0442. \u041e\u043d\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u0430\u043c\u0438 \u043a\u0430\u043a <code>Object<\/code>, \u0442\u0430\u043a \u0438 <code>object<\/code>.<\/p>\n<p>  <\/p>\n<h1 id=\"raznye-tipy-perechisleniy-tipov\">\u0420\u0430\u0437\u043d\u044b\u0435 \u0442\u0438\u043f\u044b \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0442\u0438\u043f\u043e\u0432<\/h1>\n<p>  <\/p>\n<p>\u0420\u0430\u0437 \u0443\u0436 \u043c\u044b \u0437\u0430\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043f\u0440\u043e \u0431\u0443\u043b\u0435\u0432\u044b\u0439 \u0442\u0438\u043f, \u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044c, \u0447\u0442\u043e \u043e\u043d \u2014 \u043d\u0438\u0447\u0442\u043e \u0438\u043d\u043e\u0435, \u043a\u0430\u043a <em>\u043a\u0440\u043e\u0442\u043a\u0438\u0439<\/em> \u0430\u043b\u0438\u0430\u0441 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043f\u0430\u0440\u044b \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type boolean_is_true_or_false = Assert&lt;     boolean,     true | false &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0421 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u043c\u0438 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0432\u0441\u0451 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">enum FL4 { Absurd, False, True, Unknown }  type FL4_is_union = Assert&lt;     FL4,     | FL4.Absurd | FL4.False | FL4.True | FL4.Unknown &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u043e\u043d\u0438 \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0438\u0437 \u0447\u0438\u0441\u0435\u043b (\u0434\u0430\u0436\u0435 \u043d\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u043e\u0432):<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type Absurd_is_number = Assert&lt;     Classify&lt; FL4.Absurd, number &gt;,     [ FL4.Absurd, '==', number ] &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0442\u0443\u0442 \u0442\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442\u0443 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0441\u043d\u043e\u0441\u0438\u0442 \u043a\u0440\u044b\u0448\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type Absurd_is_never_wtf = Assert&lt;     Classify&lt; FL4.Absurd, 0 &gt;,     [ never, '&lt;:', 0 ] &gt;<\/code><\/pre>\n<p>  <\/p>\n<p><em>\u042d\u0439, \u0442\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442, \u0442\u044b \u043a\u0443\u0434\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u0438\u043f \u043f\u043e\u0442\u0435\u0440\u044f\u043b? \u0412\u0435\u0440\u043d\u0438, \u0433\u0434\u0435 \u0432\u0437\u044f\u043b!<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type One_is_never_wtf = Assert&lt;     Classify&lt; FL4.Absurd, 1 &gt;,     [ FL4.Absurd, ':&gt;', never ] &gt;<\/code><\/pre>\n<p>  <\/p>\n<p><em>\u0412\u043e\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e, \u0441\u043e\u0432\u0441\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0435 \u0434\u0435\u043b\u043e!<\/em><\/p>\n<p>  <\/p>\n<p>\u041f\u043e \u0432\u0441\u0435\u0439 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u044d\u0442\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043b\u0438\u0442\u0435\u0440\u0430\u043b\u044b, \u0430 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">enum FL3 { Absurd, False, True }  type Absurd_is_not_Absurd = Assert&lt;     Equal&lt; FL3.Absurd, FL4.Absurd &gt; | false,     false &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0443 \u0434\u0430 \u043b\u0430\u0434\u043d\u043e, \u0443 \u043d\u0430\u0441 \u0435\u0449\u0451 \u043e\u0441\u0442\u0430\u043b\u0438\u0441\u044c \u043d\u0435 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0432\u0435\u0434\u0443\u0442 \u043e\u043d\u0438 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0438 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435, \u043e\u0434\u043d\u0430\u043a\u043e, \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">enum HappyDebugging {     False = &quot;True&quot;,      True = &quot;False&quot;, }  type True_extends_string = Assert&lt;     Classify&lt; HappyDebugging.True, string &gt;,     [ HappyDebugging.True, '&lt;:', string ] &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e <code>number<\/code> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u0447\u0438\u0441\u043b\u043e\u0432\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0430 \u0432\u043e\u0442 <code>string<\/code> \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u0433\u043e \u0443\u0436\u0435 \u043d\u0435\u0442.<\/p>\n<p>  <\/p>\n<h1 id=\"prizraki-proshlogo\">\u041f\u0440\u0438\u0437\u0440\u0430\u043a\u0438 \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e<\/h1>\n<p>  <\/p>\n<p>\u0412 \u0422\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u0430\u0445 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>never<\/code> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0443\u0441\u0442\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c \u043b\u044e\u0431\u043e\u0433\u043e \u0442\u0438\u043f\u0430, \u0438 \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0438\u043f \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0435\u0433\u043e \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c.<\/li>\n<li><code>unknown<\/code> \u0436\u0435 \u2014 \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435\u0445 \u0442\u0438\u043f\u043e\u0432 \u0432 \u043e\u0434\u0438\u043d. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u044e\u0431\u043e\u0439 \u0442\u0438\u043f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c <code>unknown<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p><em>\u041d\u043e \u0447\u0442\u043e \u044d\u0442\u043e \u043c\u0430\u044f\u0447\u0438\u0442 \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c\u0438? \u0414\u0430 \u044d\u0442\u043e \u0436\u0435 <code>any<\/code>!<\/em> \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043e\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u0437\u0430\u0438\u043c\u043e\u0437\u0430\u043c\u0435\u043d\u044f\u0435\u043c \u0441 <code>unknown<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type unknown_is_any = Assert&lt;     unknown,     any &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u043e \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0436\u0435, \u043e\u043d \u043a\u0430\u043a \u043a\u043e\u0442 \u0428\u0440\u0451\u0434\u0438\u043d\u0433\u0435\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434\u0442\u0438\u043f\u043e\u043c <code>never<\/code> (\u0438 \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u043e <code>unknown<\/code>) \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a\u043e\u0432\u044b\u043c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">type any_maybe_extends_never = Assert&lt;     any extends never ? true : false,     true | false &gt;<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u043e\u0440\u043e\u0447\u0435, <code>any<\/code> \u043f\u0440\u043e\u0431\u0438\u0432\u0430\u0435\u0442 \u0434\u043d\u043e \u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0441\u043c\u044b\u0441\u043b\u0430\u0445. \u0422\u044f\u0436\u0435\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u044c \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0451\u0442\u0441\u044f \u0441 \u043d\u0438\u043c \u043b\u0438\u0446\u043e\u043c \u043a \u043b\u0438\u0446\u0443&#8230;<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/_a\/o8\/n2\/_ao8n2bwzs9jd3rciaic30fpjpk.jpeg\"><\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/www.typescriptlang.org\/play?#code\/C4TwDgpgBARg9nANhAhgOwPoEsDOGDyMAVhAMbBQC8UAgjjhAE7AA8AsAFBTewLLpQIAD2AQ0AExxRCJclAD8UYIwCu0AFxQAZikQMANJx5LVETgD5OnUJF5JUmXBjRxgGOMTIVqdBs3ZcPPD2AsKiElIeshSKympQmjp6EIaB3EkMFlYcNtAyXhgAbnhRXlS09EysRjwAwogo9FhaICzSnuT6UKVy5qnGANrt0V0A5JSUo109FAC6WRzW4NDB-I54cRDujBgZ0D6V-jXcqw79PJtQAD7aupkcloscYioAtlAAYgAyACxQAN60GA4FSMcRdD53FJQAAqpi6AFU0ABrFwAdzQUAAvtlcp9ftg8Co0Fg4JiDn5qml8T9ztwbt8fgA6GjA0Hia40pmQ5KcxlMuHxBm-JlI1FwDELJa2VkgsGE5xvGBMcq+KoBYz1Ro4ZqtLmy9ldNBKlV9Y5QIb8g1gsYTKZQY2vZWMKDzB645ZAuXiBVoCCFJgYNHALSqw5UzUNJotNpWtk2qAABigZupQz9AcYYxY6ntybdj2leT9vv9geDoYp6vNWujerj3q6AEYU3SLfr4+CoKN1OZ7RmVQXsi93t8AMwAr2Gz5QrqC6A4p5460+pwuNwrsOUjU8ACiAEcVLpY18xyzOxCRZvzJy9m29lLno6oAAJFBgMAgAAiEBgKgA5v+WBoP+ALmjyDDlAARPOUFdOa87QRBEBwZwi5FrCpgYGEYiSBgODKMBoFVkc1K1jqMavu+n4-n+gFEQK8JQARjBEa25pDG+H7fr+AFASBjFqNmuZdCxbFDkunrEuKGIKugIBbtW1LSeiaBtvJj54vJGCvCgIDKthIi4XgA4uiREY8PJghGREDpli6sSmAktzJG2lw3A+7pPAA9AAVP5AWBUFwUhaFoXeR6MrhgEACQNDkEeiCpDFu5CJA5AQByOERJwMU3AeiVtPFwCJV0qXpaIHKPHlUAALK4MAKDIhAbSjAA4q4UDEsIFWZUoyz2sViUphYqoJbokXQGqzAAHL2UV42INZ4SSHZmYpmNJUTZJtgFceUBfBAWjAF0ABKWD-gAFhQN7ULlAAUuUxSwAAa5j3QAlJQN73VAL3LcZB1HTEUAtpoABMUAfblH0A7Zj0cDFz1vZ931QL9-3Zat51XSDYNQJD0OI7DigqRKmKaKZ2TcJw4hkA0jDQKQZIEXVDVNRAADKIBOkgznElgh7QDgPPwIgk1swRHOxbVED0Cg-7QFjUhiSByUAJJoFocDlFTDzlLL8uK1AABkk5DPVUvNdzvNLbMmia9r2IS+RuptIdx1nRd10bdQHsUMrUA49d2QxYowcBzZq3+09ihDP7UC2pMXu466T2aPHwOJ92Ob2hHaeI7lmj54HMeI2H7b+2MvZ597czp5XWdjAAhMnQd166QA\" rel=\"nofollow\">\u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u0438\u0437 \u0441\u0442\u0430\u0442\u044c\u0438.<\/a><\/p>\n<p>  <\/p>\n<p><em>\u0421\u0447\u0430\u0441\u0442\u043b\u0438\u0432\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u0440\u0435\u0431\u044f\u0442\u0430!<\/em><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/531030\/\"> https:\/\/habr.com\/ru\/post\/531030\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0414\u043c\u0438\u0442\u0440\u0438\u0439 \u041a\u0430\u0440\u043b\u043e\u0432\u0441\u043a\u0438\u0439 \u0438 \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u044f, \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <a href=\"https:\/\/github.com\/cevek\" rel=\"nofollow\">\u0410\u0440\u0442\u0443\u0440\u043e\u043c \u041c\u0443\u043a\u043c\u0438\u043d\u043e\u0432\u044b\u043c<\/a>, \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b \u0432\u043e\u0440\u043a\u0448\u043e\u043f, \u0433\u0434\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b <a href=\"https:\/\/github.com\/nin-jin\/tdtd\" rel=\"nofollow\">\u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u0442\u0438\u043f\u043e\u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/a>. \u042d\u0442\u043e 2 \u0447\u0430\u0441\u0430 \u0441\u0443\u0440\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0442\u0438\u043f\u0430\u0445. \u0422\u0430\u043a \u0447\u0442\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0438\u0437\u0435\u0440\u0430, \u043b\u043e\u0432\u0438\u0442\u0435 \u0440\u0430\u0437\u0431\u043e\u0440 \u043a\u0443\u0440\u044c\u0451\u0437\u043e\u0432 \u0442\u0430\u0439\u043f\u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0442\u0438\u043f\u043e\u0432.<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/5t\/k3\/c6\/5tk3c6ersy8tehcgylcomegjy5s.png\"><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-314275","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314275","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=314275"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/314275\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=314275"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=314275"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=314275"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}