{"id":79587,"date":"2024-10-09T11:29:26","date_gmt":"2024-10-09T07:59:26","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/"},"modified":"2024-10-09T11:29:26","modified_gmt":"2024-10-09T07:59:26","slug":"simplifying-type-narrowing-and-guards-in-typescript-5gh5","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/","title":{"rendered":"\u0633\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u062a\u0627\u06cc\u067e \u0628\u0627\u0631\u06cc\u06a9 \u0648 \u0645\u062d\u0627\u0641\u0638 \u062f\u0631 TypeScript"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u0628\u0631 \u0645\u0641\u0647\u0648\u0645 \u0628\u0627\u0631\u06cc\u06a9 \u0633\u0627\u0632\u06cc<\/p>\n<p>\u0627\u0633\u0646\u0627\u062f \u062a\u0627\u06cc\u067e \u0627\u0633\u06a9\u0631\u06cc\u067e \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f. \u0645\u0646 \u0642\u0635\u062f \u0646\u062f\u0627\u0631\u0645 \u0647\u0645\u0627\u0646 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u067e\u06cc \u0648 \u067e\u06cc\u0633\u062a \u06a9\u0646\u0645\u060c \u0628\u0644\u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0622\u0646 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0648 \u06a9\u0648\u062a\u0627\u0647\u200c\u062a\u0631 \u06a9\u0646\u0645. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u0641\u0647\u0648\u0645 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0645\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 TypeScript \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0627 \u062f\u0642\u062a \u0628\u0647 \u06a9\u062f \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f. \u062a\u0648\u0636\u06cc\u062d \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>function padLeft(padding: number | string, input: string): string {<br \/>\n    return &#8221; &#8220;.repeat(padding) + input;<br \/>\n}<\/p>\n<p>\u0627\u06af\u0631 padding \u06cc\u06a9 \u0627\u0633\u062a number\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0639\u062f\u0627\u062f \u0641\u0636\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f input \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 padding \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u06a9\u0631\u0627\u0631 \u0639\u0628\u0648\u0631 \u06a9\u0631\u062f padding \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0639\u062f\u062f\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627\u060c \u0644\u062d\u0638\u0647 padLeft \u062a\u0627\u0628\u0639 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f\u060c \u06cc\u06a9 \u062e\u0637\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062a\u0627 \u062d\u062f\u0648\u062f\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<p>&#8220;\u0622\u0631\u06af\u0645\u0648\u0646 \u0646\u0648\u0639 &#8220;string | number&#8221; \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0633\u0627\u0628 \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0646\u0648\u0639 &#8220;number&#8221; \u0646\u06cc\u0633\u062a. \u0646\u0648\u0639 &#8220;string&#8221; \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0633\u0627\u0628 \u0628\u0647 \u0646\u0648\u0639 &#8220;number&#8221; \u0646\u06cc\u0633\u062a.&#8221;<\/p>\n<p>TypeScript \u0628\u0647 \u0645\u0627 \u0647\u0634\u062f\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0628\u0627 type \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 number | string \u0628\u0647 repeat \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0641\u0642\u0637 a \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f number\u060c \u0648 \u062f\u0631\u0633\u062a \u0627\u0633\u062a. \u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u0645\u0627 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0627\u06af\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 padding \u06cc\u06a9 \u0627\u0633\u062a number \u0627\u0648\u0644\u060c \u0648 \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0648\u0631\u062f\u06cc \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a \u0631\u0633\u06cc\u062f\u06af\u06cc \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645 string\u060c \u067e\u0633 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.<\/p>\n<p>function padLeft(padding: number | string, input: string): string {<br \/>\n  if (typeof padding === &#8220;number&#8221;) {<br \/>\n    return &#8221; &#8220;.repeat(padding) + input;<br \/>\n  }<br \/>\n  return padding + input;<br \/>\n}<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0645\u06cc \u0646\u0648\u06cc\u0633\u06cc\u0645 if (typeof padding === &#8220;number&#8221;)\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0647\u0633\u062a\u06cc\u0645 padding \u06cc\u06a9 \u0639\u062f\u062f \u0627\u0633\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u06a9 \u00ab\u0646\u06af\u0647\u0628\u0627\u0646 \u0646\u0648\u0639\u00bb \u0645\u06cc \u06af\u0648\u06cc\u0646\u062f. TypeScript \u0628\u0647 \u06a9\u062f \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0646\u0648\u0639 \u062f\u0642\u06cc\u0642 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc TypeScript \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc\u200c\u0647\u0627 \u06cc\u06a9 \u0646\u0648\u0639 \u0631\u0627 \u0645\u0634\u062e\u0635\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0647 \u0622\u0646 \u00ab\u062a\u06cc\u0632 \u06a9\u0631\u062f\u0646\u00bb \u0645\u06cc\u200c\u06af\u0648\u06cc\u0646\u062f.<\/p>\n<p>  \u062a\u0627\u06cc\u067e \u06af\u0627\u0631\u062f<\/p>\n<p>\u062a\u0627\u06cc\u067e \u06af\u0627\u0631\u062f \u0686\u06a9\u200c\u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 TypeScript \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0646\u0648\u0639 \u062e\u0627\u0635\u06cc \u0627\u0632 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0644\u0648\u06a9 \u0634\u0631\u0637\u06cc \u0627\u0633\u062a\u0646\u062a\u0627\u062c \u06a9\u0646\u062f. TypeScript \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc &#8220;\u0645\u062d\u0627\u0641\u0638\u062a&#8221; \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0627\u0631\u0627\u06cc \u0646\u0648\u0639 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0633\u062a\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u062a\u062f\u0627\u0648\u0644 \u062a\u0631\u06cc\u0646 \u0646\u0648\u0639 \u0645\u062d\u0627\u0641\u0638 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 TypeScript \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<p>typeof: \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0627\u0632 \u0646\u0648\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b string\u060c number\u060c boolean\u0648 \u063a\u06cc\u0631\u0647)<br \/>\ninstanceof: \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u06cc\u0627 \u062a\u0627\u0628\u0639 \u0633\u0627\u0632\u0646\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f typeof \u062f\u0631 \u0628\u062e\u0634 \u0642\u0628\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 typeof \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0646\u0648\u0639 \u062e\u0627\u0635 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a instanceof:<\/p>\n<p>class Dog {<br \/>\n  bark() {<br \/>\n    console.log(&#8220;Woof!&#8221;);<br \/>\n  }<br \/>\n}<\/p>\n<p>class Cat {<br \/>\n  meow() {<br \/>\n    console.log(&#8220;Meow!&#8221;);<br \/>\n  }<br \/>\n}<\/p>\n<p>function animalSound(animal: Dog | Cat) {<br \/>\n  if (animal instanceof Dog) {<br \/>\n    animal.bark(); \/\/ TypeScript knows `animal` is a `Dog` here<br \/>\n  } else {<br \/>\n    animal.meow(); \/\/ TypeScript knows `animal` is a `Cat` here<br \/>\n  }<br \/>\n}<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c instanceof \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f animal \u0628\u0647 \u0647\u0631 \u062f\u0648 Dog \u06cc\u0627 Cat. \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0631\u0648\u0634 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645 (bark() \u06cc\u0627 meow()) \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 animal.<\/p>\n<p>  \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u062d\u0642\u06cc\u0642\u062a<\/p>\n<p>\u062d\u0642\u06cc\u0642\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0644\u0645\u0647 \u0627\u06cc \u0646\u0628\u0627\u0634\u062f \u06a9\u0647 \u062f\u0631 \u0641\u0631\u0647\u0646\u06af \u0644\u063a\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631\u0628\u0627\u0631\u0647 \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u062d\u0642\u06cc\u0642\u062a \u062f\u0631 TypeScript \u0628\u0647 \u0631\u0648\u0634\u06cc \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 TypeScript \u0627\u0646\u0648\u0627\u0639 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0634\u0631\u0627\u06cc\u0637 (&amp;&amp;\u0627\u0633\u060c ||\u0627\u0633\u060c if \u06af\u0632\u0627\u0631\u0647 \u0647\u0627\u060c \u0646\u0641\u06cc \u0647\u0627\u06cc \u0628\u0648\u0644\u06cc (!) \u0648 \u0628\u06cc\u0634\u062a\u0631) \u06a9\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 &#8220;\u062f\u0631\u0633\u062a&#8221; \u06cc\u0627 &#8220;\u0646\u0627\u062f\u0631\u0633\u062a&#8221; \u0627\u0633\u062a. \u0627\u0631\u0632\u0634 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f false\u060c 0\u060c null\u060c undefined\u060c NaN\u060c \u0648 &#8220;&#8221; (\u0631\u0634\u062a\u0647 \u062e\u0627\u0644\u06cc) \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u062a\u0642\u0644\u0628\u06cc\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u06cc\u06af\u0631 \u0647\u0633\u062a\u0646\u062f \u0635\u062f\u0627\u0642\u062a.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f if \u0639\u0628\u0627\u0631\u062a TypeScript \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u0648\u0639 \u0631\u0627 \u0628\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0646 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f falsy \u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0645\u0645\u06a9\u0646<\/p>\n<p>function printMessage(message: string | null) {<br \/>\n  if (message) {<br \/>\n    \/\/ TypeScript knows &#8216;message&#8217; can&#8217;t be null here, it&#8217;s narrowed to &#8216;string&#8217;<br \/>\n    console.log(message.toUpperCase());<br \/>\n  } else {<br \/>\n    console.log(&#8220;No message provided.&#8221;);<br \/>\n  }<br \/>\n}<\/p>\n<p>printMessage(&#8220;Hello&#8221;);   \/\/ Output: HELLO<br \/>\nprintMessage(null);      \/\/ Output: No message provided.<\/p>\n<p>\u062f\u0631 if (message) \u0628\u0644\u0648\u06a9\u060c TypeScript \u0646\u0648\u0639 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f string | null \u0641\u0642\u0637 string\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 null \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0633\u062a \u0648 \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0631\u0637 \u0639\u0628\u0648\u0631 \u0646\u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a\u060c \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0628\u0648\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f Boolean \u0639\u0645\u0644\u06a9\u0631\u062f \u06cc\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 !! (\u0646\u0641\u06cc \u0645\u0636\u0627\u0639\u0641). \u0631\u0627 !! \u0631\u0648\u0634 \u06cc\u06a9 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f: TypeScript \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u062e\u062a \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u062f true \u06cc\u0627 false\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 Boolean \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0644\u06cc \u0645\u06cc \u062f\u0647\u062f boolean \u0646\u0648\u0639<\/p>\n<p>const value = &#8220;Hello&#8221;;<\/p>\n<p>\/\/ Using Boolean function<br \/>\nconst bool1 = Boolean(value);  \/\/ type: boolean<\/p>\n<p>\/\/ Using double negation (!!)<br \/>\nconst bool2 = !!value;         \/\/ type: true<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0634\u062e\u0635 \u0628\u0648\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>bool1\u0627\u0631\u0632\u0634 a \u0627\u0633\u062a \u0646\u0648\u0639 \u0628\u0648\u0644\u06cc \u0627\u0631\u0632\u0634\u060c \u06cc\u0639\u0646\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u062f\u0648 \u0628\u0627\u0634\u062f true \u06cc\u0627 false. TypeScript \u0641\u0642\u0637 \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a boolean\u060c \u0627\u0645\u0627 \u0645\u0634\u062e\u0635 \u0646\u0645\u06cc \u06a9\u0646\u062f \u06a9\u062f\u0627\u0645 \u06cc\u06a9.<br \/>\nbool2\u0645\u0642\u062f\u0627\u0631 a \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f \u0646\u0648\u0639 \u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc- \u06cc\u0627 \u062f\u0642\u06cc\u0642\u0627 true \u06cc\u0627 \u062f\u0642\u06cc\u0642\u0627 false\u060c \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u0631\u0632\u0634 !!value. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 &#8220;Hello&#8221; \u0631\u0627\u0633\u062a \u0627\u0633\u062a\u060c bool2 \u0627\u0632 \u0646\u0648\u0639 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f true.<\/p>\n<p>  \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0628\u0631\u0627\u0628\u0631\u06cc<\/p>\n<p>\u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0628\u0631\u0627\u0628\u0631\u06cc \u062f\u0631 TypeScript \u0632\u0645\u0627\u0646\u06cc \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u06a9\u0647 TypeScript \u0646\u0648\u0639 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u06cc\u06a9 \u0628\u0631\u0631\u0633\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc (\u0645\u0627\u0646\u0646\u062f === \u06cc\u0627 !==). \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc\u060c TypeScript \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0646\u0648\u0627\u0639 \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u00ab\u0645\u062d\u062f\u0648\u062f\u00bb \u06a9\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u062f\u0627\u0631\u062f.<\/p>\n<p>function example(value: string | number) {<br \/>\n  if (typeof value === &#8220;number&#8221;) {<br \/>\n    \/\/ Here, TypeScript knows value is a number<br \/>\n    console.log(value.toFixed(2));  \/\/ Safe to use number methods<br \/>\n  } else {<br \/>\n    \/\/ In this block, TypeScript narrows value to string<br \/>\n    console.log(value.toUpperCase());  \/\/ Safe to use string methods<br \/>\n  }<br \/>\n}<\/p>\n<p>  \u0631\u0627 in \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0627\u067e\u0631\u0627\u062a\u0648\u0631<\/p>\n<p>\u0631\u0627 in \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0639\u0645\u0644\u06af\u0631 \u062f\u0631 TypeScript \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0622\u06cc\u0627 \u06cc\u06a9 \u0634\u06cc \u062f\u0627\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u062e\u0627\u0635\u06cc \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 TypeScript \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0646\u0648\u0627\u0639 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0628\u0631\u0631\u0633\u06cc \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u062f.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f &#8220;propertyName&#8221; in object\u060c TypeScript \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u06cc (\u06cc\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0622\u0646) \u062f\u0627\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631. \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0686\u06a9 \u0627\u0633\u062a true \u06cc\u0627 false\u060c TypeScript \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u0648\u0639 \u0622\u0646 \u0634\u06cc\u0621 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0627\u06af\u0631 \u0686\u06a9 \u0627\u0633\u062a \u062f\u0631\u0633\u062a \u0627\u0633\u062a (\u0648\u06cc\u0698\u06af\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f)\u060c TypeScript \u0646\u0648\u0639 \u0634\u06cc \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0646\u0648\u0627\u0639\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u062f\u0627\u0631\u0646\u062f (\u0627\u0639\u0645 \u0627\u0632 \u0627\u0644\u0632\u0627\u0645\u06cc \u06cc\u0627 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc) \u0634\u0627\u0645\u0644 \u0634\u0648\u062f.<br \/>\n\u0627\u06af\u0631 \u0686\u06a9 \u0627\u0633\u062a \u0646\u0627\u062f\u0631\u0633\u062a (\u0648\u06cc\u0698\u06af\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f)\u060c TypeScript \u0646\u0648\u0639 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0646\u0648\u0627\u0639\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u062f\u0627\u0631\u0646\u062f \u062d\u0630\u0641 \u06a9\u0646\u062f.<\/p>\n<p>type Cat = { meow: () =&gt; void };<br \/>\ntype Dog = { bark: () =&gt; void };<\/p>\n<p>function speak(animal: Cat | Dog) {<br \/>\n  if (&#8220;meow&#8221; in animal) {<br \/>\n    \/\/ TypeScript now knows &#8216;animal&#8217; must be a Cat<br \/>\n    animal.meow();<br \/>\n  } else {<br \/>\n    \/\/ TypeScript now knows &#8216;animal&#8217; must be a Dog<br \/>\n    animal.bark();<br \/>\n  }<br \/>\n}<\/p>\n<p>\u062f\u0631 if (&#8220;meow&#8221; in animal) \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u060c TypeScript \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 animal \u0631\u0627 \u062f\u0627\u0631\u062f meow \u0631\u0648\u0634 \u0627\u06af\u0631 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0628\u0627\u0634\u062f\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u062d\u06cc\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0633\u062a \u06af\u0631\u0628\u0647. \u0627\u06af\u0631 \u0646\u0647\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a \u0633\u06af.<\/p>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062d\u0645\u0648\u0644\u0627\u062a \u0646\u0648\u0639<\/p>\n<p>\u0645\u062d\u0645\u0648\u0644\u0627\u062a \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f \u062f\u0631 TypeScript \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 Boolean \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0622\u0646\u0647\u0627 \u0628\u0647 TypeScript \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u0646\u062f \u062a\u0627 \u0628\u0641\u0647\u0645\u062f \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0686\u0647 \u0646\u0648\u0639 \u0627\u0633\u062a.<\/p>\n<p>\u06cc\u06a9 \u0645\u062d\u0645\u0648\u0644 \u0646\u0648\u0639 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f parameterName is Type. \u0648\u0642\u062a\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0631 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u0627\u06af\u0631 \u062a\u0627\u0628\u0639 \u0628\u0631\u06af\u0631\u062f\u062f true\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0646\u0648\u0639 \u062e\u0627\u0635 \u0627\u0633\u062a.<\/p>\n<p>type Fish = { swim: () =&gt; void };<br \/>\ntype Bird = { fly: () =&gt; void };<\/p>\n<p>function isFish(animal: Fish | Bird): animal is Fish {<br \/>\n  return (animal as Fish).swim !== undefined;  \/\/ Check if animal has a swim method<br \/>\n}<\/p>\n<p>function move(animal: Fish | Bird) {<br \/>\n  if (isFish(animal)) {<br \/>\n    \/\/ TypeScript knows &#8216;animal&#8217; is a Fish here<br \/>\n    animal.swim();<br \/>\n  } else {<br \/>\n    \/\/ TypeScript knows &#8216;animal&#8217; is a Bird here<br \/>\n    animal.fly();<br \/>\n  }<br \/>\n}<\/p>\n<p>\u062a\u0648\u0636\u06cc\u062d \u0633\u0627\u062f\u0647:<\/p>\n<p>\u0631\u0627 isFish \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 animal \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 swim \u0631\u0648\u0634<br \/>\n\u0627\u06af\u0631 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u06a9\u0631\u062f\u060c \u062a\u0627\u0628\u0639 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u062f true\u0648 TypeScript \u0622\u0646 \u0631\u0627 \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u062f animal \u06cc\u06a9 \u0627\u0633\u062a \u0645\u0627\u0647\u06cc.<br \/>\n\u0627\u06af\u0631 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u06cc\u0633\u062a\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a \u067e\u0631\u0646\u062f\u0647.<\/p>\n<p>  \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632<\/p>\n<p>\u0627\u062a\u062d\u0627\u062f\u06cc\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u0645\u0627\u06cc\u0632 \u0627\u0644\u06af\u0648\u06cc\u06cc \u062f\u0631 TypeScript \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0634\u062a\u0631\u06a9 (\u0628\u0647 \u0646\u0627\u0645 \u00ab\u062a\u0645\u0627\u06cc\u0632\u06a9\u0646\u0646\u062f\u0647\u00bb) \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u06cc\u0632 \u0628\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u0634\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u06cc\u06a9 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0647 \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>interface Car {<br \/>\n  kind: &#8220;car&#8221;;<br \/>\n  drive: () =&gt; void;<br \/>\n}<\/p>\n<p>interface Bike {<br \/>\n  kind: &#8220;bike&#8221;;<br \/>\n  pedal: () =&gt; void;<br \/>\n}<\/p>\n<p>type Vehicle = Car | Bike;<\/p>\n<p>function operateVehicle(vehicle: Vehicle) {<br \/>\n  switch (vehicle.kind) {<br \/>\n    case &#8220;car&#8221;:<br \/>\n      vehicle.drive(); \/\/ TypeScript knows `vehicle` is a `Car` here<br \/>\n      break;<br \/>\n    case &#8220;bike&#8221;:<br \/>\n      vehicle.pedal(); \/\/ TypeScript knows `vehicle` is a `Bike` here<br \/>\n      break;<br \/>\n  }<br \/>\n}<\/p>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c kind \u0627\u0645\u0648\u0627\u0644 \u0645\u062a\u0645\u0627\u06cc\u0632 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a. TypeScript \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f Vehicle \u0628\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f Car \u06cc\u0627 Bike \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0631\u0632\u0634 kind.<\/p>\n<p>  \u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646<\/p>\n<p>\u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646 \u062f\u0631 TypeScript \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0645\u0645\u06a9\u0646 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u062f\u0631 \u06a9\u062f \u0634\u0645\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f. \u0648\u0642\u062a\u06cc \u0627\u0632 \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f (\u0645\u0627\u0646\u0646\u062f \u0628\u0627 if \u0627\u0638\u0647\u0627\u0631\u0627\u062a \u06cc\u0627 switch \u0645\u0648\u0627\u0631\u062f)\u060c TypeScript \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u062f\u0631 \u06cc\u06a9 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0627\u06af\u0631 \u0645\u0648\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c TypeScript \u0628\u0647 \u0634\u0645\u0627 \u062e\u0637\u0627\u06cc\u06cc \u0645\u06cc \u062f\u0647\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>type Cat = { type: &#8220;cat&#8221;; meow: () =&gt; void };<br \/>\ntype Dog = { type: &#8220;dog&#8221;; bark: () =&gt; void };<br \/>\ntype Animal = Cat | Dog;<\/p>\n<p>function makeSound(animal: Animal) {<br \/>\n  switch (animal.type) {<br \/>\n    case &#8220;cat&#8221;:<br \/>\n      animal.meow();  \/\/ TypeScript knows &#8216;animal&#8217; is Cat here<br \/>\n      break;<br \/>\n    case &#8220;dog&#8221;:<br \/>\n      animal.bark();  \/\/ TypeScript knows &#8216;animal&#8217; is Dog here<br \/>\n      break;<br \/>\n    default:<br \/>\n      \/\/ This will give an error if we add more animal types<br \/>\n      const _exhaustiveCheck: never = animal;<br \/>\n      throw new Error(`Unknown animal: ${animal}`);<br \/>\n  }<br \/>\n}<\/p>\n<p>\u0631\u0627 Animal \u0646\u0648\u0639 \u06cc\u06a9 \u0627\u062a\u062d\u0627\u062f \u0627\u0632 Cat \u0648 Dog. \u062f\u0631 makeSound \u062a\u0627\u0628\u0639\u060c \u0645\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 type \u062f\u0627\u0631\u0627\u06cc\u06cc \u0627\u0632 animal.<\/p>\n<p>\u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646:<\/p>\n<p>\u0627\u06af\u0631 \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u06a9\u0646\u06cc\u0645 cat \u0648 dog\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062e\u0648\u0628 \u0627\u0633\u062a.<br \/>\n\u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u06cc\u06a9 \u0646\u0648\u0639 \u062d\u06cc\u0648\u0627\u0646 \u062f\u06cc\u06af\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u0627\u0646\u0646\u062f Bird\u0648 \u0641\u0631\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 switch \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f\u060c TypeScript \u06cc\u06a9 \u062e\u0637\u0627 \u0631\u0627 \u062f\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f default \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 default \u0645\u0648\u0631\u062f \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a never \u0646\u0648\u0639\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0627\u06af\u0631 \u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u0645\u0645\u06a9\u0646 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u0648\u0646\u062f\u060c \u0646\u0628\u0627\u06cc\u062f \u0627\u062a\u0641\u0627\u0642 \u0628\u06cc\u0641\u062a\u062f.<\/p>\n<p>  \u0631\u0648\u0634 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639<\/p>\n<p>\u062a\u06a9\u0627\u0644\u06cc\u0641: \u0648\u0642\u062a\u06cc \u0628\u0647 \u0647\u0631 \u0645\u062a\u063a\u06cc\u0631\u06cc \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c TypeScript \u0628\u0647 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u062a\u06a9\u0644\u06cc\u0641 \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u0645\u062a \u0686\u067e \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u0627\u0631\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>let x = Math.random() &lt; 0.5 ? 10 : &#8220;hello world!&#8221;;<\/p>\n<p>\u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e \u0628\u0627 never type: \u0631\u0627 never type in TypeScript \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0647\u0631\u06af\u0632 \u0631\u062e \u0646\u0645\u06cc \u062f\u0647\u0646\u062f. \u0627\u063a\u0644\u0628 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u06a9\u062f\u0647\u0627\u06cc \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0647\u0645\u06cc\u0634\u0647 \u062e\u0637\u0627 \u0645\u06cc \u062f\u0647\u062f \u06cc\u0627 \u06cc\u06a9 \u062d\u0644\u0642\u0647 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc TypeScript a \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc \u062f\u0647\u062f never \u0646\u0648\u0639\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0646\u0648\u0627\u0639 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u062f.<\/p>\n<p>function assertIsString(value: string | number) {<br \/>\n  if (typeof value !== &#8220;string&#8221;) {<br \/>\n    \/\/ If value is not a string, throw an error<br \/>\n    throw new Error(&#8220;Not a string!&#8221;);<br \/>\n  }<br \/>\n  \/\/ Here, TypeScript knows &#8216;value&#8217; is a string<br \/>\n  console.log(value.toUpperCase());<br \/>\n}<\/p>\n<p>\u062f\u0631 assertIsString \u062a\u0627\u0628\u0639\u060c \u0627\u06af\u0631 value \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0646\u06cc\u0633\u062a\u060c \u0645\u0627 \u06cc\u06a9 \u062e\u0637\u0627 \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u0645. TypeScript \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0627\u06af\u0631 \u0628\u0647 \u0622\u0646 \u0628\u0631\u0633\u062f console.log\u060c value \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0627\u06af\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0648\u062f\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0639\u0645\u0648\u0644 \u06a9\u0627\u0645\u0644 \u0646\u0645\u06cc \u0634\u062f \u0648 \u0645\u0646\u062c\u0631 \u0628\u0647 a \u0645\u06cc \u0634\u062f never \u0646\u0648\u0639<\/p>\n<p>  \u0622\u062e\u0631\u06cc\u0646 \u06a9\u0644\u0645\u0627\u062a<\/p>\n<p>\u0645\u0646 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u0645 \u06a9\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0645\u0641\u0647\u0648\u0645 \u0647\u0633\u062a\u06cc\u062f. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0631\u0627\u0647 \u0647\u0627\u06cc \u0645\u0645\u06a9\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0627\u0645\u0627 \u0645\u0646 \u0645\u0639\u062a\u0642\u062f\u0645 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 \u062f\u0627\u0646\u0634\u06cc \u06a9\u0647 \u062a\u0627\u06a9\u0646\u0648\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0645\u0641\u0647\u0648\u0645 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0628\u06cc\u0634 \u0627\u0632 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f \u0628\u0647 \u0645\u0646 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 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-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D9%85%D9%82%D8%AF%D9%85%D9%87_%D8%A7%DB%8C_%D8%A8%D8%B1_%D9%85%D9%81%D9%87%D9%88%D9%85_%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B3%D8%A7%D8%B2%DB%8C\" >\u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u0628\u0631 \u0645\u0641\u0647\u0648\u0645 \u0628\u0627\u0631\u06cc\u06a9 \u0633\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%AA%D8%A7%DB%8C%D9%BE_%DA%AF%D8%A7%D8%B1%D8%AF\" >\u062a\u0627\u06cc\u067e \u06af\u0627\u0631\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B4%D8%AF%D9%86_%D8%AD%D9%82%DB%8C%D9%82%D8%AA\" >\u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u062d\u0642\u06cc\u0642\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B4%D8%AF%D9%86_%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C\" >\u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0628\u0631\u0627\u0628\u0631\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%B1%D8%A7_in_%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B4%D8%AF%D9%86_%D8%A7%D9%BE%D8%B1%D8%A7%D8%AA%D9%88%D8%B1\" >\u0631\u0627 in \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0627\u067e\u0631\u0627\u062a\u0648\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D9%85%D8%AD%D9%85%D9%88%D9%84%D8%A7%D8%AA_%D9%86%D9%88%D8%B9\" >\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062d\u0645\u0648\u0644\u0627\u062a \u0646\u0648\u0639<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%A7%D8%AA%D8%AD%D8%A7%D8%AF%DB%8C%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D8%A8%D8%B9%DB%8C%D8%B6_%D8%A2%D9%85%DB%8C%D8%B2\" >\u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C_%D8%AC%D8%A7%D9%85%D8%B9_%D8%A8%D9%88%D8%AF%D9%86\" >\u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%B1%D9%88%D8%B4_%D9%87%D8%A7%DB%8C_%D8%AF%DB%8C%DA%AF%D8%B1_%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%DA%A9%D8%B1%D8%AF%D9%86_%D9%86%D9%88%D8%B9\" >\u0631\u0648\u0634 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/simplifying-type-narrowing-and-guards-in-typescript-5gh5\/#%D8%A2%D8%AE%D8%B1%DB%8C%D9%86_%DA%A9%D9%84%D9%85%D8%A7%D8%AA\" >\u0622\u062e\u0631\u06cc\u0646 \u06a9\u0644\u0645\u0627\u062a<\/a><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87_%D8%A7%DB%8C_%D8%A8%D8%B1_%D9%85%D9%81%D9%87%D9%88%D9%85_%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u0628\u0631 \u0645\u0641\u0647\u0648\u0645 \u0628\u0627\u0631\u06cc\u06a9 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u0627\u0633\u0646\u0627\u062f \u062a\u0627\u06cc\u067e \u0627\u0633\u06a9\u0631\u06cc\u067e \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f. \u0645\u0646 \u0642\u0635\u062f \u0646\u062f\u0627\u0631\u0645 \u0647\u0645\u0627\u0646 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u067e\u06cc \u0648 \u067e\u06cc\u0633\u062a \u06a9\u0646\u0645\u060c \u0628\u0644\u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0622\u0646 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0648 \u06a9\u0648\u062a\u0627\u0647\u200c\u062a\u0631 \u06a9\u0646\u0645. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u0641\u0647\u0648\u0645 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0645\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u062f\u0631 TypeScript \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0627 \u062f\u0642\u062a \u0628\u0647 \u06a9\u062f \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f. \u062a\u0648\u0636\u06cc\u062d \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0637\u0639\u0647 \u06a9\u062f \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">padLeft<\/span><span class=\"p\">(<\/span><span class=\"nx\">padding<\/span><span class=\"p\">:<\/span> <span class=\"kr\">number<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">string<\/span><span class=\"p\">,<\/span> <span class=\"nx\">input<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">):<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\"> <\/span><span class=\"dl\">\"<\/span><span class=\"p\">.<\/span><span class=\"nf\">repeat<\/span><span class=\"p\">(<\/span><span class=\"nx\">padding<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">input<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06af\u0631 <code>padding<\/code> \u06cc\u06a9 \u0627\u0633\u062a <code>number<\/code>\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062a\u0639\u062f\u0627\u062f \u0641\u0636\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0622\u0646\u200c\u0647\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f <code>input<\/code> \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 <code>padding<\/code> \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u06a9\u0631\u0627\u0631 \u0639\u0628\u0648\u0631 \u06a9\u0631\u062f <code>padding<\/code> \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0639\u062f\u062f\u06cc \u0628\u0627\u0634\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627\u060c \u0644\u062d\u0638\u0647 <code>padLeft<\/code> \u062a\u0627\u0628\u0639 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f\u060c \u06cc\u06a9 \u062e\u0637\u0627 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062a\u0627 \u062d\u062f\u0648\u062f\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<p><em>&#8220;\u0622\u0631\u06af\u0645\u0648\u0646 \u0646\u0648\u0639 &#8220;string | number&#8221; \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0633\u0627\u0628 \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0646\u0648\u0639 &#8220;number&#8221; \u0646\u06cc\u0633\u062a. \u0646\u0648\u0639 &#8220;string&#8221; \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0633\u0627\u0628 \u0628\u0647 \u0646\u0648\u0639 &#8220;number&#8221; \u0646\u06cc\u0633\u062a.&#8221;<\/em><\/p>\n<p>TypeScript \u0628\u0647 \u0645\u0627 \u0647\u0634\u062f\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0628\u0627 type \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>number | string<\/code> \u0628\u0647 <code>repeat<\/code> \u062a\u0627\u0628\u0639\u06cc \u06a9\u0647 \u0641\u0642\u0637 a \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f <code>number<\/code>\u060c \u0648 \u062f\u0631\u0633\u062a \u0627\u0633\u062a. \u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u0645\u0627 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0627\u06af\u0631 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0646\u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 <code>padding<\/code> \u06cc\u06a9 \u0627\u0633\u062a <code>number<\/code> \u0627\u0648\u0644\u060c \u0648 \u0645\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0648\u0631\u062f\u06cc \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a \u0631\u0633\u06cc\u062f\u06af\u06cc \u0646\u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>string<\/code>\u060c \u067e\u0633 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">padLeft<\/span><span class=\"p\">(<\/span><span class=\"nx\">padding<\/span><span class=\"p\">:<\/span> <span class=\"kr\">number<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">string<\/span><span class=\"p\">,<\/span> <span class=\"nx\">input<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span><span class=\"p\">):<\/span> <span class=\"kr\">string<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">padding<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">number<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\"> <\/span><span class=\"dl\">\"<\/span><span class=\"p\">.<\/span><span class=\"nf\">repeat<\/span><span class=\"p\">(<\/span><span class=\"nx\">padding<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">input<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n  <span class=\"k\">return<\/span> <span class=\"nx\">padding<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">input<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0648\u0642\u062a\u06cc \u0645\u06cc \u0646\u0648\u06cc\u0633\u06cc\u0645 <code>if (typeof padding === \"number\")<\/code>\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0647\u0633\u062a\u06cc\u0645 <code>padding<\/code> \u06cc\u06a9 \u0639\u062f\u062f \u0627\u0633\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0646\u0648\u0639 \u0686\u06a9 \u00ab\u0646\u06af\u0647\u0628\u0627\u0646 \u0646\u0648\u0639\u00bb \u0645\u06cc \u06af\u0648\u06cc\u0646\u062f. TypeScript \u0628\u0647 \u06a9\u062f \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0646\u0648\u0639 \u062f\u0642\u06cc\u0642 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u06a9\u0634\u0641 \u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc TypeScript \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc\u200c\u0647\u0627 \u06cc\u06a9 \u0646\u0648\u0639 \u0631\u0627 \u0645\u0634\u062e\u0635\u200c\u062a\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0647 \u0622\u0646 \u00ab\u062a\u06cc\u0632 \u06a9\u0631\u062f\u0646\u00bb \u0645\u06cc\u200c\u06af\u0648\u06cc\u0646\u062f.<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%D8%AA%D8%A7%DB%8C%D9%BE_%DA%AF%D8%A7%D8%B1%D8%AF\"><\/span>\n<p>  \u062a\u0627\u06cc\u067e \u06af\u0627\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><strong>\u062a\u0627\u06cc\u067e \u06af\u0627\u0631\u062f<\/strong> \u0686\u06a9\u200c\u0647\u0627\u06cc \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 TypeScript \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0646\u0648\u0639 \u062e\u0627\u0635\u06cc \u0627\u0632 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0644\u0648\u06a9 \u0634\u0631\u0637\u06cc \u0627\u0633\u062a\u0646\u062a\u0627\u062c \u06a9\u0646\u062f. TypeScript \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0631\u0631\u0633\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc &#8220;\u0645\u062d\u0627\u0641\u0638\u062a&#8221; \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0645\u062a\u063a\u06cc\u0631 \u062f\u0627\u0631\u0627\u06cc \u0646\u0648\u0639 \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0633\u062a\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0645\u062a\u062f\u0627\u0648\u0644 \u062a\u0631\u06cc\u0646 \u0646\u0648\u0639 \u0645\u062d\u0627\u0641\u0638 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u062f\u0631 TypeScript \u0639\u0628\u0627\u0631\u062a\u0646\u062f \u0627\u0632:<\/p>\n<ul>\n<li>\n<p><code>typeof<\/code>: \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0627\u0632 \u0646\u0648\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u062a (\u0645\u062b\u0644\u0627\u064b <code>string<\/code>\u060c <code>number<\/code>\u060c <code>boolean<\/code>\u0648 \u063a\u06cc\u0631\u0647)<\/p>\n<\/li>\n<li>\n<p><code>instanceof<\/code>: \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u06cc\u0627 \u062a\u0627\u0628\u0639 \u0633\u0627\u0632\u0646\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<\/li>\n<\/ul>\n<p>\u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f <code>typeof<\/code> \u062f\u0631 \u0628\u062e\u0634 \u0642\u0628\u0644\u06cc \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 <code>typeof<\/code> \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0646\u0648\u0639 \u062e\u0627\u0635 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a <code>instanceof<\/code>:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">class<\/span> <span class=\"nc\">Dog<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">bark<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Woof!<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">class<\/span> <span class=\"nc\">Cat<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nf\">meow<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Meow!<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">animalSound<\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Dog<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">Cat<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span> <span class=\"k\">instanceof<\/span> <span class=\"nx\">Dog<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">bark<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ TypeScript knows `animal` is a `Dog` here<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">meow<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ TypeScript knows `animal` is a `Cat` here<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c <code>instanceof<\/code> \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f <code>animal<\/code> \u0628\u0647 \u0647\u0631 \u062f\u0648 <code>Dog<\/code> \u06cc\u0627 <code>Cat<\/code>. \u0627\u06cc\u0646 \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0628\u0627 \u062e\u06cc\u0627\u0644 \u0631\u0627\u062d\u062a \u0631\u0648\u0634 \u0645\u0646\u0627\u0633\u0628 \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645 (<code>bark()<\/code> \u06cc\u0627 <code>meow()<\/code>) \u0628\u0631 \u0627\u0633\u0627\u0633 \u0646\u0648\u0639 <code>animal<\/code>.<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B4%D8%AF%D9%86_%D8%AD%D9%82%DB%8C%D9%82%D8%AA\"><\/span>\n<p>  \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u062d\u0642\u06cc\u0642\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u062d\u0642\u06cc\u0642\u062a \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06a9\u0644\u0645\u0647 \u0627\u06cc \u0646\u0628\u0627\u0634\u062f \u06a9\u0647 \u062f\u0631 \u0641\u0631\u0647\u0646\u06af \u0644\u063a\u062a \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u0631\u0628\u0627\u0631\u0647 \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u062d\u0642\u06cc\u0642\u062a<\/strong> \u062f\u0631 TypeScript \u0628\u0647 \u0631\u0648\u0634\u06cc \u0627\u0634\u0627\u0631\u0647 \u062f\u0627\u0631\u062f \u06a9\u0647 TypeScript \u0627\u0646\u0648\u0627\u0639 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0634\u0631\u0627\u06cc\u0637 (<code>&amp;&amp;<\/code>\u0627\u0633\u060c <code>||<\/code>\u0627\u0633\u060c <code>if<\/code> \u06af\u0632\u0627\u0631\u0647 \u0647\u0627\u060c \u0646\u0641\u06cc \u0647\u0627\u06cc \u0628\u0648\u0644\u06cc (<code>!<\/code>) \u0648 \u0628\u06cc\u0634\u062a\u0631) \u06a9\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 &#8220;\u062f\u0631\u0633\u062a&#8221; \u06cc\u0627 &#8220;\u0646\u0627\u062f\u0631\u0633\u062a&#8221; \u0627\u0633\u062a. \u0627\u0631\u0632\u0634 \u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>false<\/code>\u060c <code>0<\/code>\u060c <code>null<\/code>\u060c <code>undefined<\/code>\u060c <code>NaN<\/code>\u060c \u0648 <code>\"\"<\/code> (\u0631\u0634\u062a\u0647 \u062e\u0627\u0644\u06cc) \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f <strong>\u062a\u0642\u0644\u0628\u06cc<\/strong>\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0647\u0645\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u062f\u06cc\u06af\u0631 \u0647\u0633\u062a\u0646\u062f <strong>\u0635\u062f\u0627\u0642\u062a<\/strong>.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>if<\/code> \u0639\u0628\u0627\u0631\u062a TypeScript \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0646\u0648\u0639 \u0631\u0627 \u0628\u0627 \u062d\u0630\u0641 \u06a9\u0631\u062f\u0646 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f <code>falsy<\/code> \u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0645\u0645\u06a9\u0646\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">printMessage<\/span><span class=\"p\">(<\/span><span class=\"nx\">message<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"o\">|<\/span> <span class=\"kc\">null<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">message<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ TypeScript knows 'message' can't be null here, it's narrowed to 'string'<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">message<\/span><span class=\"p\">.<\/span><span class=\"nf\">toUpperCase<\/span><span class=\"p\">());<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">No message provided.<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"nf\">printMessage<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Hello<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>   <span class=\"c1\">\/\/ Output: HELLO<\/span>\n<span class=\"nf\">printMessage<\/span><span class=\"p\">(<\/span><span class=\"kc\">null<\/span><span class=\"p\">);<\/span>      <span class=\"c1\">\/\/ Output: No message provided.<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 <code>if (message)<\/code> \u0628\u0644\u0648\u06a9\u060c TypeScript \u0646\u0648\u0639 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f <code>string | null<\/code> \u0641\u0642\u0637 <code>string<\/code>\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 <code>null<\/code> \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0633\u062a \u0648 \u0627\u0632 \u0627\u06cc\u0646 \u0634\u0631\u0637 \u0639\u0628\u0648\u0631 \u0646\u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0639\u0628\u0627\u0631\u062a\u060c \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0628\u0648\u0644\u06cc \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0646\u06cc\u062f <code>Boolean<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u06cc\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>!!<\/code> (\u0646\u0641\u06cc \u0645\u0636\u0627\u0639\u0641). \u0631\u0627 <code>!!<\/code> \u0631\u0648\u0634 \u06cc\u06a9 \u0645\u0632\u06cc\u062a \u062f\u0627\u0631\u062f: TypeScript \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0633\u062e\u062a \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u062f <code>true<\/code> \u06cc\u0627 <code>false<\/code>\u060c \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 <code>Boolean<\/code> \u062a\u0627\u0628\u0639 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0644\u06cc \u0645\u06cc \u062f\u0647\u062f <code>boolean<\/code> \u0646\u0648\u0639\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">const<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">=<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">Hello<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n\n<span class=\"c1\">\/\/ Using Boolean function<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">bool1<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Boolean<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">);<\/span>  <span class=\"c1\">\/\/ type: boolean<\/span>\n\n<span class=\"c1\">\/\/ Using double negation (!!)<\/span>\n<span class=\"kd\">const<\/span> <span class=\"nx\">bool2<\/span> <span class=\"o\">=<\/span> <span class=\"o\">!!<\/span><span class=\"nx\">value<\/span><span class=\"p\">;<\/span>         <span class=\"c1\">\/\/ type: true<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0645\u0634\u062e\u0635 \u0628\u0648\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul>\n<li>\n<p><code>bool1<\/code>\u0627\u0631\u0632\u0634 a \u0627\u0633\u062a <strong>\u0646\u0648\u0639 \u0628\u0648\u0644\u06cc<\/strong> \u0627\u0631\u0632\u0634\u060c \u06cc\u0639\u0646\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u062f\u0648 \u0628\u0627\u0634\u062f <code>true<\/code> \u06cc\u0627 <code>false<\/code>. TypeScript \u0641\u0642\u0637 \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a <code>boolean<\/code>\u060c \u0627\u0645\u0627 \u0645\u0634\u062e\u0635 \u0646\u0645\u06cc \u06a9\u0646\u062f \u06a9\u062f\u0627\u0645 \u06cc\u06a9.<\/p>\n<\/li>\n<li>\n<p><code>bool2<\/code>\u0645\u0642\u062f\u0627\u0631 a \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f <strong>\u0646\u0648\u0639 \u062a\u062d\u062a \u0627\u0644\u0644\u0641\u0638\u06cc<\/strong>&#8211; \u06cc\u0627 \u062f\u0642\u06cc\u0642\u0627 <code>true<\/code> \u06cc\u0627 \u062f\u0642\u06cc\u0642\u0627 <code>false<\/code>\u060c \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u0631\u0632\u0634 <code>!!value<\/code>. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 <code>\"Hello\"<\/code> \u0631\u0627\u0633\u062a \u0627\u0633\u062a\u060c <code>bool2<\/code> \u0627\u0632 \u0646\u0648\u0639 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>true<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B4%D8%AF%D9%86_%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1%DB%8C\"><\/span>\n<p>  \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0628\u0631\u0627\u0628\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><strong>\u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0628\u0631\u0627\u0628\u0631\u06cc<\/strong> \u062f\u0631 TypeScript \u0632\u0645\u0627\u0646\u06cc \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc \u0627\u0641\u062a\u062f \u06a9\u0647 TypeScript \u0646\u0648\u0639 \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u06cc\u06a9 \u0628\u0631\u0631\u0633\u06cc \u0628\u0631\u0627\u0628\u0631\u06cc (\u0645\u0627\u0646\u0646\u062f <code>===<\/code> \u06cc\u0627 <code>!==<\/code>). \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc\u060c TypeScript \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0646\u0648\u0627\u0639 \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u0631\u0627 \u00ab\u0645\u062d\u062f\u0648\u062f\u00bb \u06a9\u0646\u062f\u060c \u0632\u06cc\u0631\u0627 \u0627\u06a9\u0646\u0648\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u062f\u0627\u0631\u062f.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">example<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">number<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">number<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ Here, TypeScript knows value is a number<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nf\">toFixed<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">));<\/span>  <span class=\"c1\">\/\/ Safe to use number methods<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ In this block, TypeScript narrows value to string<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nf\">toUpperCase<\/span><span class=\"p\">());<\/span>  <span class=\"c1\">\/\/ Safe to use string methods<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<h1><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7_in_%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%D8%B4%D8%AF%D9%86_%D8%A7%D9%BE%D8%B1%D8%A7%D8%AA%D9%88%D8%B1\"><\/span>\n<p>  \u0631\u0627 <code>in<\/code> \u0628\u0627\u0631\u06cc\u06a9 \u0634\u062f\u0646 \u0627\u067e\u0631\u0627\u062a\u0648\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u0631\u0627 <code>in<\/code> \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0639\u0645\u0644\u06af\u0631 \u062f\u0631 TypeScript \u0628\u0647 \u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0628\u0641\u0647\u0645\u06cc\u0645 \u0622\u06cc\u0627 \u06cc\u06a9 \u0634\u06cc \u062f\u0627\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u062e\u0627\u0635\u06cc \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631\u060c \u0648 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 TypeScript \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0646\u0648\u0627\u0639 \u0631\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0646 \u0628\u0631\u0631\u0633\u06cc \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u062f.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f <code>\"propertyName\" in object<\/code>\u060c TypeScript \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0634\u06cc (\u06cc\u0627 \u0646\u0645\u0648\u0646\u0647 \u0627\u0648\u0644\u06cc\u0647 \u0622\u0646) \u062f\u0627\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631. \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u0686\u06a9 \u0627\u0633\u062a <code>true<\/code> \u06cc\u0627 <code>false<\/code>\u060c TypeScript \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u0648\u0639 \u0622\u0646 \u0634\u06cc\u0621 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<ul>\n<li>\n<p>\u0627\u06af\u0631 \u0686\u06a9 \u0627\u0633\u062a <strong>\u062f\u0631\u0633\u062a \u0627\u0633\u062a<\/strong> (\u0648\u06cc\u0698\u06af\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f)\u060c TypeScript \u0646\u0648\u0639 \u0634\u06cc \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0646\u0648\u0627\u0639\u06cc \u0631\u0627 \u06a9\u0647 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u062f\u0627\u0631\u0646\u062f (\u0627\u0639\u0645 \u0627\u0632 \u0627\u0644\u0632\u0627\u0645\u06cc \u06cc\u0627 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc) \u0634\u0627\u0645\u0644 \u0634\u0648\u062f.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0686\u06a9 \u0627\u0633\u062a <strong>\u0646\u0627\u062f\u0631\u0633\u062a<\/strong> (\u0648\u06cc\u0698\u06af\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f)\u060c TypeScript \u0646\u0648\u0639 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0646\u0648\u0627\u0639\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u062f\u0627\u0631\u0646\u062f \u062d\u0630\u0641 \u06a9\u0646\u062f.\n<\/p>\n<\/li>\n<\/ul>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">type<\/span> <span class=\"nx\">Cat<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">meow<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span> <span class=\"p\">};<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Dog<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">bark<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">speak<\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Cat<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">Dog<\/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\">meow<\/span><span class=\"dl\">\"<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">animal<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ TypeScript now knows 'animal' must be a Cat<\/span>\n    <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">meow<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ TypeScript now knows 'animal' must be a Dog<\/span>\n    <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">bark<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 <code>if (\"meow\" in animal)<\/code> \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f\u060c TypeScript \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 <code>animal<\/code> \u0631\u0627 \u062f\u0627\u0631\u062f <code>meow<\/code> \u0631\u0648\u0634 \u0627\u06af\u0631 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0628\u0627\u0634\u062f\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u062d\u06cc\u0648\u0627\u0646 \u06cc\u06a9 \u0627\u0633\u062a <strong>\u06af\u0631\u0628\u0647<\/strong>. \u0627\u06af\u0631 \u0646\u0647\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a <strong>\u0633\u06af<\/strong>.<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D9%85%D8%AD%D9%85%D9%88%D9%84%D8%A7%D8%AA_%D9%86%D9%88%D8%B9\"><\/span>\n<p>  \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u062d\u0645\u0648\u0644\u0627\u062a \u0646\u0648\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><strong>\u0645\u062d\u0645\u0648\u0644\u0627\u062a \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f<\/strong> \u062f\u0631 TypeScript \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639 \u0645\u062a\u063a\u06cc\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0627\u0628\u0639\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06cc\u06a9 Boolean \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f. \u0622\u0646\u0647\u0627 \u0628\u0647 TypeScript \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u0646\u062f \u062a\u0627 \u0628\u0641\u0647\u0645\u062f \u06cc\u06a9 \u0645\u062a\u063a\u06cc\u0631 \u067e\u0633 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u0686\u0647 \u0646\u0648\u0639 \u0627\u0633\u062a.<\/p>\n<p>\u06cc\u06a9 \u0645\u062d\u0645\u0648\u0644 \u0646\u0648\u0639 \u0628\u0647 \u0635\u0648\u0631\u062a \u0646\u0648\u0634\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f <code>parameterName is Type<\/code>. \u0648\u0642\u062a\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u062f\u0631 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u0627\u06af\u0631 \u062a\u0627\u0628\u0639 \u0628\u0631\u06af\u0631\u062f\u062f <code>true<\/code>\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0646\u0648\u0639 \u062e\u0627\u0635 \u0627\u0633\u062a.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">type<\/span> <span class=\"nx\">Fish<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">swim<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span> <span class=\"p\">};<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Bird<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">fly<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">isFish<\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Fish<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">Bird<\/span><span class=\"p\">):<\/span> <span class=\"nx\">animal<\/span> <span class=\"k\">is<\/span> <span class=\"nx\">Fish<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span> <span class=\"k\">as<\/span> <span class=\"nx\">Fish<\/span><span class=\"p\">).<\/span><span class=\"nx\">swim<\/span> <span class=\"o\">!==<\/span> <span class=\"kc\">undefined<\/span><span class=\"p\">;<\/span>  <span class=\"c1\">\/\/ Check if animal has a swim method<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">move<\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Fish<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">Bird<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nf\">isFish<\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">))<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ TypeScript knows 'animal' is a Fish here<\/span>\n    <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">swim<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ TypeScript knows 'animal' is a Bird here<\/span>\n    <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">fly<\/span><span class=\"p\">();<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p><strong>\u062a\u0648\u0636\u06cc\u062d \u0633\u0627\u062f\u0647:<\/strong><\/p>\n<ul>\n<li>\n<p>\u0631\u0627 <code>isFish<\/code> \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 <code>animal<\/code> \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 <code>swim<\/code> \u0631\u0648\u0634<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u06a9\u0631\u062f\u060c \u062a\u0627\u0628\u0639 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u062f <code>true<\/code>\u0648 TypeScript \u0622\u0646 \u0631\u0627 \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u062f <code>animal<\/code> \u06cc\u06a9 \u0627\u0633\u062a <strong>\u0645\u0627\u0647\u06cc<\/strong>.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0627\u06cc\u0646\u0637\u0648\u0631 \u0646\u06cc\u0633\u062a\u060c TypeScript \u0645\u06cc \u062f\u0627\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a <strong>\u067e\u0631\u0646\u062f\u0647<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D8%AD%D8%A7%D8%AF%DB%8C%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D8%A8%D8%B9%DB%8C%D8%B6_%D8%A2%D9%85%DB%8C%D8%B2\"><\/span>\n<p>  \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0647\u0627\u06cc \u062a\u0628\u0639\u06cc\u0636 \u0622\u0645\u06cc\u0632<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u0627\u062a\u062d\u0627\u062f\u06cc\u0647\u200c\u0647\u0627\u06cc \u0645\u062a\u0645\u0627\u06cc\u0632 \u0627\u0644\u06af\u0648\u06cc\u06cc \u062f\u0631 TypeScript \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0645\u0634\u062a\u0631\u06a9 (\u0628\u0647 \u0646\u0627\u0645 \u00ab\u062a\u0645\u0627\u06cc\u0632\u06a9\u0646\u0646\u062f\u0647\u00bb) \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u06cc\u0632 \u0628\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u0634\u06cc\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u06cc\u06a9 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u0647 \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kr\">interface<\/span> <span class=\"nx\">Car<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nl\">kind<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">car<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">drive<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kr\">interface<\/span> <span class=\"nx\">Bike<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nl\">kind<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bike<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">pedal<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"kd\">type<\/span> <span class=\"nx\">Vehicle<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Car<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">Bike<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">operateVehicle<\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Vehicle<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">switch <\/span><span class=\"p\">(<\/span><span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nx\">kind<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">car<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n      <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nf\">drive<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ TypeScript knows `vehicle` is a `Car` here<\/span>\n      <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">bike<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n      <span class=\"nx\">vehicle<\/span><span class=\"p\">.<\/span><span class=\"nf\">pedal<\/span><span class=\"p\">();<\/span> <span class=\"c1\">\/\/ TypeScript knows `vehicle` is a `Bike` here<\/span>\n      <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0627\u06cc\u0646\u062c\u0627\u060c <code>kind<\/code> \u0627\u0645\u0648\u0627\u0644 \u0645\u062a\u0645\u0627\u06cc\u0632 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a. TypeScript \u0627\u0632 \u0622\u0646 \u0628\u0631\u0627\u06cc \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>Vehicle<\/code> \u0628\u0647 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f <code>Car<\/code> \u06cc\u0627 <code>Bike<\/code> \u0628\u0631 \u0627\u0633\u0627\u0633 \u0627\u0631\u0632\u0634 <code>kind<\/code>.<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C_%D8%AC%D8%A7%D9%85%D8%B9_%D8%A8%D9%88%D8%AF%D9%86\"><\/span>\n<p>  \u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><strong>\u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646<\/strong> \u062f\u0631 TypeScript \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0645\u0645\u06a9\u0646 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u062f\u0631 \u06a9\u062f \u0634\u0645\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u0634\u0648\u062f. \u0648\u0642\u062a\u06cc \u0627\u0632 \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f (\u0645\u0627\u0646\u0646\u062f \u0628\u0627 <code>if<\/code> \u0627\u0638\u0647\u0627\u0631\u0627\u062a \u06cc\u0627 <code>switch<\/code> \u0645\u0648\u0627\u0631\u062f)\u060c TypeScript \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0622\u06cc\u0627 \u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u062f\u0631 \u06cc\u06a9 \u0627\u062a\u062d\u0627\u062f\u06cc\u0647 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631. \u0627\u06af\u0631 \u0645\u0648\u0631\u062f\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c TypeScript \u0628\u0647 \u0634\u0645\u0627 \u062e\u0637\u0627\u06cc\u06cc \u0645\u06cc \u062f\u0647\u062f \u0648 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0627\u062d\u062a\u0645\u0627\u0644\u06cc \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u062f.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">type<\/span> <span class=\"nx\">Cat<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">cat<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span> <span class=\"nl\">meow<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span> <span class=\"p\">};<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Dog<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">type<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dog<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span> <span class=\"nl\">bark<\/span><span class=\"p\">:<\/span> <span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"k\">void<\/span> <span class=\"p\">};<\/span>\n<span class=\"kd\">type<\/span> <span class=\"nx\">Animal<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">Cat<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">Dog<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">function<\/span> <span class=\"nf\">makeSound<\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">:<\/span> <span class=\"nx\">Animal<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">switch <\/span><span class=\"p\">(<\/span><span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"kd\">type<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">cat<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n      <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">meow<\/span><span class=\"p\">();<\/span>  <span class=\"c1\">\/\/ TypeScript knows 'animal' is Cat here<\/span>\n      <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">case<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">dog<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span>\n      <span class=\"nx\">animal<\/span><span class=\"p\">.<\/span><span class=\"nf\">bark<\/span><span class=\"p\">();<\/span>  <span class=\"c1\">\/\/ TypeScript knows 'animal' is Dog here<\/span>\n      <span class=\"k\">break<\/span><span class=\"p\">;<\/span>\n    <span class=\"nl\">default<\/span><span class=\"p\">:<\/span>\n      <span class=\"c1\">\/\/ This will give an error if we add more animal types<\/span>\n      <span class=\"kd\">const<\/span> <span class=\"nx\">_exhaustiveCheck<\/span><span class=\"p\">:<\/span> <span class=\"nx\">never<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">animal<\/span><span class=\"p\">;<\/span>\n      <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Error<\/span><span class=\"p\">(<\/span><span class=\"s2\">`Unknown animal: <\/span><span class=\"p\">${<\/span><span class=\"nx\">animal<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0631\u0627 <code>Animal<\/code> \u0646\u0648\u0639 \u06cc\u06a9 \u0627\u062a\u062d\u0627\u062f \u0627\u0632 <code>Cat<\/code> \u0648 <code>Dog<\/code>. \u062f\u0631 <code>makeSound<\/code> \u062a\u0627\u0628\u0639\u060c \u0645\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>type<\/code> \u062f\u0627\u0631\u0627\u06cc\u06cc \u0627\u0632 <code>animal<\/code>.<\/p>\n<p><strong>\u0628\u0631\u0631\u0633\u06cc \u062c\u0627\u0645\u0639 \u0628\u0648\u062f\u0646<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0627\u06af\u0631 \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0627\u062f\u0627\u0631\u0647 \u06a9\u0646\u06cc\u0645 <code>cat<\/code> \u0648 <code>dog<\/code>\u060c \u0647\u0645\u0647 \u0686\u06cc\u0632 \u062e\u0648\u0628 \u0627\u0633\u062a.<\/p>\n<\/li>\n<li>\n<p>\u0627\u06af\u0631 \u0628\u0639\u062f\u0627\u064b \u06cc\u06a9 \u0646\u0648\u0639 \u062d\u06cc\u0648\u0627\u0646 \u062f\u06cc\u06af\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u0627\u0646\u0646\u062f <code>Bird<\/code>\u0648 \u0641\u0631\u0627\u0645\u0648\u0634 \u06a9\u0646\u06cc\u062f \u062f\u0633\u062a\u0648\u0631 switch \u0631\u0627 \u0628\u0647 \u0631\u0648\u0632 \u06a9\u0646\u06cc\u062f\u060c TypeScript \u06cc\u06a9 \u062e\u0637\u0627 \u0631\u0627 \u062f\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f <code>default<\/code> \u0645\u0648\u0631\u062f \u0627\u06cc\u0646 \u062e\u0637\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0631\u062e \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 <code>default<\/code> \u0645\u0648\u0631\u062f \u0627\u062e\u062a\u0635\u0627\u0635 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>never<\/code> \u0646\u0648\u0639\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u0627\u06af\u0631 \u0647\u0645\u0647 \u0627\u0646\u0648\u0627\u0639 \u0645\u0645\u06a9\u0646 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u0648\u0646\u062f\u060c \u0646\u0628\u0627\u06cc\u062f \u0627\u062a\u0641\u0627\u0642 \u0628\u06cc\u0641\u062a\u062f.<\/p>\n<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%D8%B1%D9%88%D8%B4_%D9%87%D8%A7%DB%8C_%D8%AF%DB%8C%DA%AF%D8%B1_%D8%A8%D8%A7%D8%B1%DB%8C%DA%A9_%DA%A9%D8%B1%D8%AF%D9%86_%D9%86%D9%88%D8%B9\"><\/span>\n<p>  \u0631\u0648\u0634 \u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0646\u0648\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><strong>\u062a\u06a9\u0627\u0644\u06cc\u0641:<\/strong> \u0648\u0642\u062a\u06cc \u0628\u0647 \u0647\u0631 \u0645\u062a\u063a\u06cc\u0631\u06cc \u0627\u062e\u062a\u0635\u0627\u0635 \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c TypeScript \u0628\u0647 \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u062a\u06a9\u0644\u06cc\u0641 \u0646\u06af\u0627\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0633\u0645\u062a \u0686\u067e \u0631\u0627 \u0628\u0647 \u062f\u0631\u0633\u062a\u06cc \u0628\u0627\u0631\u06cc\u06a9 \u0645\u06cc \u06a9\u0646\u062f.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">let<\/span> <span class=\"nx\">x<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">Math<\/span><span class=\"p\">.<\/span><span class=\"nf\">random<\/span><span class=\"p\">()<\/span> <span class=\"o\">&lt;<\/span> <span class=\"mf\">0.5<\/span> <span class=\"p\">?<\/span> <span class=\"mi\">10<\/span> <span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">hello world!<\/span><span class=\"dl\">\"<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p><strong>\u0628\u0627\u0631\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e \u0628\u0627 never type:<\/strong> \u0631\u0627 <code>never<\/code> type in TypeScript \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0647\u0631\u06af\u0632 \u0631\u062e \u0646\u0645\u06cc \u062f\u0647\u0646\u062f. \u0627\u063a\u0644\u0628 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u06a9\u062f\u0647\u0627\u06cc \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u062a\u0627\u0628\u0639 \u0647\u0645\u06cc\u0634\u0647 \u062e\u0637\u0627 \u0645\u06cc \u062f\u0647\u062f \u06cc\u0627 \u06cc\u06a9 \u062d\u0644\u0642\u0647 \u0628\u06cc \u0646\u0647\u0627\u06cc\u062a \u062f\u0627\u0631\u062f. \u0648\u0642\u062a\u06cc TypeScript a \u0631\u0627 \u062a\u0634\u062e\u06cc\u0635 \u0645\u06cc \u062f\u0647\u062f <code>never<\/code> \u0646\u0648\u0639\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0646\u0648\u0627\u0639 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u062f.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight typescript\"><code><span class=\"kd\">function<\/span> <span class=\"nf\">assertIsString<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">:<\/span> <span class=\"kr\">string<\/span> <span class=\"o\">|<\/span> <span class=\"kr\">number<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"k\">typeof<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">!==<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">string<\/span><span class=\"dl\">\"<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"c1\">\/\/ If value is not a string, throw an error<\/span>\n    <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Error<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">Not a string!<\/span><span class=\"dl\">\"<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">}<\/span>\n  <span class=\"c1\">\/\/ Here, TypeScript knows 'value' is a string<\/span>\n  <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">.<\/span><span class=\"nf\">toUpperCase<\/span><span class=\"p\">());<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 <code>assertIsString<\/code> \u062a\u0627\u0628\u0639\u060c \u0627\u06af\u0631 <code>value<\/code> \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0646\u06cc\u0633\u062a\u060c \u0645\u0627 \u06cc\u06a9 \u062e\u0637\u0627 \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u0645. TypeScript \u062f\u0631\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0627\u06af\u0631 \u0628\u0647 \u0622\u0646 \u0628\u0631\u0633\u062f <code>console.log<\/code>\u060c <code>value<\/code> \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0627\u06af\u0631 \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0648\u062f\u060c \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647 \u0637\u0648\u0631 \u0645\u0639\u0645\u0648\u0644 \u06a9\u0627\u0645\u0644 \u0646\u0645\u06cc \u0634\u062f \u0648 \u0645\u0646\u062c\u0631 \u0628\u0647 a \u0645\u06cc \u0634\u062f <code>never<\/code> \u0646\u0648\u0639<\/p>\n<h1><span class=\"ez-toc-section\" id=\"%D8%A2%D8%AE%D8%B1%DB%8C%D9%86_%DA%A9%D9%84%D9%85%D8%A7%D8%AA\"><\/span>\n<p>  \u0622\u062e\u0631\u06cc\u0646 \u06a9\u0644\u0645\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>\u0645\u0646 \u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u0645 \u06a9\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0645\u0639\u0646\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0645\u0641\u0647\u0648\u0645 \u0647\u0633\u062a\u06cc\u062f. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0631\u0627\u0647 \u0647\u0627\u06cc \u0645\u0645\u06a9\u0646 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0627\u0645\u0627 \u0645\u0646 \u0645\u0639\u062a\u0642\u062f\u0645 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0648 \u062f\u0627\u0646\u0634\u06cc \u06a9\u0647 \u062a\u0627\u06a9\u0646\u0648\u0646 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0645\u0641\u0647\u0648\u0645 \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0628\u06cc\u0634 \u0627\u0632 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0634\u0645\u0627 \u0645\u0641\u06cc\u062f \u0628\u0648\u062f \u0628\u0647 \u0645\u0646 \u0627\u0637\u0644\u0627\u0639 \u062f\u0647\u06cc\u062f.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0642\u062f\u0645\u0647 \u0627\u06cc \u0628\u0631 \u0645\u0641\u0647\u0648\u0645 \u0628\u0627\u0631\u06cc\u06a9 \u0633\u0627\u0632\u06cc \u0627\u0633\u0646\u0627\u062f \u062a\u0627\u06cc\u067e \u0627\u0633\u06a9\u0631\u06cc\u067e \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0627 \u0628\u0647 \u062e\u0648\u0628\u06cc \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f. \u0645\u0646 \u0642\u0635\u062f \u0646\u062f\u0627\u0631\u0645 \u0647\u0645\u0627\u0646 \u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06a9\u067e\u06cc \u0648 \u067e\u06cc\u0633\u062a \u06a9\u0646\u0645\u060c \u0628\u0644\u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0622\u0646 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0648 \u06a9\u0648\u062a\u0627\u0647\u200c\u062a\u0631 \u06a9\u0646\u0645. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"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-79587","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/79587","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=79587"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/79587\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=79587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=79587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=79587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}