{"id":7049,"date":"2026-09-19T17:00:42","date_gmt":"2026-09-19T13:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7049"},"modified":"2026-09-19T17:00:42","modified_gmt":"2026-09-19T13:30:42","slug":"%d9%86%d8%ad%d9%88%d9%87-%d8%b1%d8%a7%d9%87%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d9%be%d8%b1%d9%88%da%98%d9%87-%d8%ac%d8%af%db%8c%d8%af-typescript","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d9%86%d8%ad%d9%88%d9%87-%d8%b1%d8%a7%d9%87%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-%d9%be%d8%b1%d9%88%da%98%d9%87-%d8%ac%d8%af%db%8c%d8%af-typescript\/","title":{"rendered":"\u0646\u062d\u0648\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f TypeScript"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0642\u0628\u0644\u0627\u064b \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647 Starter \u06cc\u0627 \u0627\u0628\u0632\u0627\u0631\u06cc \u0645\u062b\u0644 Angular CLI \u0628\u0627 TypeScript \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u0686\u0637\u0648\u0631 \u067e\u0631\u0648\u0698\u0647 TypeScript \u0631\u0627 \u0628\u062f\u0648\u0646 \u06a9\u0645\u06a9 Starter \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062f\u0631 TypeScript \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0686\u0637\u0648\u0631 \u0627\u0632 Linter \u0628\u0627 \u067e\u0631\u0648\u0698\u0647 TypeScript \u062e\u0648\u062f\u062a\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0634\u0645\u0627 \u0631\u0627 \u062f\u0631 \u0646\u062d\u0648\u0647 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 TypeScript \u0627\u0632 \u0635\u0641\u0631\u060c \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 TypeScript \u0648 \u0633\u0627\u062e\u062a \u0631\u0648\u0646\u062f\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc \u062c\u062f\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 TypeScript \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0641\u0631\u0627\u0646\u062a\u200c\u0627\u0646\u062f \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u06af\u06cc\u062a\u200c\u0647\u0627\u0628 \u0631\u0648\u06cc \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0627\u0628\u0631\u06cc \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u062f\u06cc\u067e\u0644\u0648\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0642\u06cc\u0627\u0633\u200c\u067e\u0630\u06cc\u0631\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u0631\u0627 \u0628\u0647 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0628\u0633\u067e\u0627\u0631\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>TypeScript \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0645\u062d\u0644\u06cc \u0646\u0635\u0628 \u0648 \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f:<\/strong><br>\u0628\u0627 \u0646\u0635\u0628 TypeScript \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0628\u0627 <code>npm i typescript --save-dev<\/code> \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0647\u0631 \u06a9\u0633\u06cc \u06a9\u0647 \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0632 \u0647\u0645\u0627\u0646 \u0646\u0633\u062e\u0647 TypeScript \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f. \u0633\u067e\u0633\u060c \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 <code>npx tsc --init<\/code> \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f\u061b \u06a9\u0647 \u0641\u0627\u06cc\u0644 tsconfig.json \u0631\u0627 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0646\u062d\u0648\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u062f\u062a\u0627\u0646 \u062a\u0648\u0633\u0637 TypeScript \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u0648 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u06cc\u0646 \u0645\u062d\u06cc\u0637\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062d\u0641\u0638 \u0634\u0648\u062f.<\/li>\n\n\n\n<li><strong>\u0627\u0632 tsconfig.json \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u062f\u0642\u06cc\u0642 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0647\u0631\u0647 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/strong><br>\u0641\u0627\u06cc\u0644 tsconfig.json\u060c \u0642\u0644\u0628 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc TypeScript \u0634\u0645\u0627\u0633\u062a. \u0627\u06cc\u0646\u062c\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0647\u0645\u06cc \u0645\u0627\u0646\u0646\u062f rootDir (\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u0648\u0631\u0633\u200c\u062a\u0627\u0646 \u0632\u0646\u062f\u06af\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f)\u060c outDir (\u062c\u0627\u06cc\u06cc \u06a9\u0647 JavaScript \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u062e\u0631\u0648\u062c\u06cc \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f)\u060c strict (\u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0633\u062e\u062a\u200c\u06af\u06cc\u0631\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0627\u0645\u0646\u200c\u062a\u0631) \u0648 esModuleInterop (\u0628\u0631\u0627\u06cc \u0628\u0647\u0628\u0648\u062f \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc CommonJS) \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0646\u06cc\u062f. \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 TypeScript \u0631\u0627 \u0645\u062a\u0646\u0627\u0633\u0628 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0648 \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>\u0628\u0627 npx tsc \u0648 \u062d\u0627\u0644\u062a Watch \u06a9\u0627\u0631\u0622\u0645\u062f \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f:<\/strong><br>\u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc TypeScript \u062e\u0648\u062f \u0628\u0647 JavaScript\u060c \u0627\u0632 \u062f\u0633\u062a\u0648\u0631 <code>npx tsc<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u062a\u062c\u0631\u0628\u0647 \u062a\u0648\u0633\u0639\u0647 \u0646\u0631\u0645\u200c\u062a\u0631\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062d\u0627\u0644\u062a Watch \u0631\u0627 \u0628\u0627 <code>npx tsc -w<\/code> \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f\u061b \u06a9\u0647 \u0647\u0631 \u0628\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u06a9\u062f\u062a\u0627\u0646 \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062f\u0648\u0628\u0627\u0631\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062d\u0644\u0642\u0647 \u0628\u0627\u0632\u062e\u0648\u0631\u062f \u0641\u0648\u0631\u06cc \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062e\u0637\u0627\u0647\u0627 \u0631\u0627 \u0632\u0648\u062f \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0631\u0648\u0646\u062f \u06a9\u0627\u0631\u06cc\u200c\u062a\u0627\u0646 \u0631\u0627 \u0633\u0631\u06cc\u0639 \u06a9\u0646\u06cc\u062f\u061b \u06a9\u0647 \u062a\u0648\u0633\u0639\u0647 \u0631\u0627 \u0628\u0647\u0631\u0647\u200c\u0648\u0631\u062a\u0631 \u0648 \u06a9\u0645\u200c\u062e\u0637\u0627\u062a\u0631 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f.<\/li>\n\n\n\n<li><strong>Google TypeScript Style (GTS) \u0631\u0627 \u0628\u0631\u0627\u06cc Linting \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0645\u0642\u0627\u0648\u0645 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u06a9\u0646\u06cc\u062f:<\/strong><br>\u0628\u0627 \u0627\u0639\u0645\u0627\u0644 \u067e\u06a9\u06cc\u062c Google TypeScript Style (GTS)\u060c \u0641\u0648\u0631\u0627\u064b \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc Linting \u062c\u0627\u0645\u0639\u06cc \u0648 \u0645\u062c\u0645\u0648\u0639\u0647\u200c\u0627\u06cc \u0627\u0632 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u200c\u0647\u0627\u06cc \u0646\u0638\u0631\u062f\u0627\u0631 \u0631\u0627 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. GTS \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u06a9\u062f \u0631\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0648 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062f\u0633\u062a\u06cc \u0631\u0627 \u06a9\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u062a\u0645\u0631\u06a9\u0632 \u0631\u0648\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u062f \u0628\u0627\u06a9\u06cc\u0641\u06cc\u062a \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f\u061b \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0627\u0632 \u0627\u0628\u062a\u062f\u0627 \u0628\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc TypeScript\u0650 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647\u200c\u0634\u062f\u0647 \u06af\u0633\u062a\u0631\u062f\u0647 \u067e\u0627\u06cc\u0628\u0646\u062f \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639 \u06a9\u0627\u0631 \u0631\u0648\u06cc \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u062f\u0631 \u062c\u0627\u06cc \u062e\u0648\u062f \u062f\u0627\u0631\u06cc\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node.js (\u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647):<\/strong><br>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u0628\u0647\u200c\u0631\u0648\u0632\u062a\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 Node.js \u0631\u0627 \u0631\u0648\u06cc \u06a9\u0627\u0645\u067e\u06cc\u0648\u062a\u0631\u062a\u0627\u0646 \u0646\u0635\u0628 \u062f\u0627\u0631\u06cc\u062f. Node.js\u060c Runtime \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u06cc \u0627\u0633\u062a \u06a9\u0647 TypeScript \u0631\u0648\u06cc \u0622\u0646 \u0628\u0646\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0648 \u062f\u0627\u0634\u062a\u0646 \u0622\u062e\u0631\u06cc\u0646 \u0646\u0633\u062e\u0647 \u06a9\u0645\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0627\u0632 \u0645\u0633\u0627\u0626\u0644 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0627\u062c\u062a\u0646\u0627\u0628 \u0648 \u0627\u0632 \u062c\u062f\u06cc\u062f\u062a\u0631\u06cc\u0646 \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627 \u0628\u0647\u0631\u0647 \u0628\u0628\u0631\u06cc\u062f. \u0627\u06af\u0631 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 Node.js \u06cc\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc\u200c\u062a\u0627\u0646 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639 \u00ab\u0646\u062d\u0648\u0647 \u0646\u0635\u0628 Node.js \u0648 \u0633\u0627\u062e\u062a \u0645\u062d\u06cc\u0637 \u062a\u0648\u0633\u0639\u0647 \u0645\u062d\u0644\u06cc\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u0622\u0634\u0646\u0627\u06cc\u06cc \u067e\u0627\u06cc\u0647 \u0628\u0627 npm (Node Package Manager):<\/strong><br>\u0628\u0627\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 npm \u0631\u0627\u062d\u062a \u0628\u0627\u0634\u06cc\u062f\u061b \u06a9\u0647 \u0647\u0646\u06af\u0627\u0645 \u0646\u0635\u0628 Node.js \u062e\u0648\u062f\u06a9\u0627\u0631 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. npm \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c\u200c\u0647\u0627 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 TypeScript \u0634\u0645\u0627 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a. \u0627\u06af\u0631 \u0628\u0627 npm \u062a\u0627\u0632\u0647\u200c\u0648\u0627\u0631\u062f \u0647\u0633\u062a\u06cc\u062f \u06cc\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u0631\u06a9\u200c\u062a\u0627\u0646 \u0631\u0627 \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u06a9\u0646\u06cc\u062f\u060c \u062e\u0648\u0627\u0646\u062f\u0646 \u00ab\u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc Node.js \u0628\u0627 npm \u0648 package.json\u00bb \u062f\u0631 \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f \u0631\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0642\u0631\u0627\u0631\u06cc \u0627\u06cc\u0646 \u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627 \u062a\u062c\u0631\u0628\u0647\u200c\u0627\u06cc \u0646\u0631\u0645 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0645\u0631\u0627\u062d\u0644 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06af\u0631 \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0631\u0627 \u0646\u062f\u0627\u0631\u06cc\u062f\u060c \u0644\u0637\u0641\u0627\u064b \u0644\u062d\u0638\u0647\u200c\u0627\u06cc \u0648\u0642\u062a \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0648 \u0645\u0646\u0627\u0628\u0639 \u0644\u06cc\u0646\u06a9\u200c\u0634\u062f\u0647 \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647 \u0645\u0631\u0648\u0631 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0631\u0648\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648 24.04 LTS (Noble)\u060c 22.04 LTS (Jammy) \u0648 20.04 LTS (Focal) \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0627\u06af\u0631 \u0631\u0648\u06cc 18.04 \u06cc\u0627 \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631 (\u0627\u0644\u0627\u0646 \u067e\u0627\u06cc\u0627\u0646-\u0639\u0645\u0631) \u0647\u0633\u062a\u06cc\u062f\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647 \u0628\u0647 \u0631\u06cc\u0644\u06cc\u0632 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0645\u0633\u06cc\u0631\u0647\u0627\u06cc \u06af\u0627\u0645\u200c\u0628\u0647\u200c\u06af\u0627\u0645 \u00ab\u0627\u0631\u062a\u0642\u0627\u06cc \u0627\u0648\u0628\u0648\u0646\u062a\u0648\u06cc LTS\u00bb \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0634\u0631\u0648\u0639 \u0633\u0631\u06cc\u0639 \u06a9\u067e\u06cc-\u067e\u06cc\u0633\u062a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0647\u0645\u0647\u200c\u0686\u06cc\u0632 \u0631\u0627 \u06cc\u06a9\u200c\u062c\u0627 Bootstrap \u06a9\u0646\u06cc\u062f\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 one-liner \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647 \u0634\u0631\u0648\u0639 TypeScript \u062e\u0648\u062f\u062a\u0627\u0646 \u0628\u0627 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init -y &amp;&amp; npm i -D typescript ts-node eslint prettier @types\/node &amp;&amp; npx tsc --init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u067e\u0631\u0648\u0698\u0647 TypeScript \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647\u060c TypeScript \u0648 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0631\u0627 \u0646\u0635\u0628 \u0648 \u0641\u0627\u06cc\u0644 tsconfig.json \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0631\u0627\u0647 \u0633\u0631\u06cc\u0639\u06cc \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u067e\u0631\u0648\u0698\u0647 TypeScript \u062c\u062f\u06cc\u062f \u0628\u062f\u0648\u0646 \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0647\u06cc\u0686 \u0636\u0631\u0648\u0631\u06cc\u200c\u0627\u06cc \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c tsconfig.json<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u067e\u0631\u06a9\u0627\u0631\u0628\u0631\u062f\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062f\u0631 tsconfig.json \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u0622\u0645\u062f\u0647:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u06af\u0632\u06cc\u0646\u0647<\/th><th>\u0647\u062f\u0641<\/th><\/tr><\/thead><tbody><tr><td>target<\/td><td>\u0646\u0633\u062e\u0647 JavaScript \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0647 \u0622\u0646 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u0645\u062b\u0644\u0627\u064b ES6\u060c ES2020).<\/td><\/tr><tr><td>module<\/td><td>\u0633\u06cc\u0633\u062a\u0645 \u0645\u0627\u0698\u0648\u0644 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u0645\u062b\u0644\u0627\u064b CommonJS\u060c ESNext).<\/td><\/tr><tr><td>moduleResolution<\/td><td>\u0646\u062d\u0648\u0647 Resolve \u0634\u062f\u0646 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f (\u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0631\u0648\u06cc node \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc\u200c\u0634\u0648\u062f).<\/td><\/tr><tr><td>rootDir<\/td><td>\u067e\u0648\u0634\u0647 \u0631\u06cc\u0634\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0633\u0648\u0631\u0633 TypeScript \u0634\u0645\u0627 (\u0645\u062b\u0644\u0627\u064b .\/src).<\/td><\/tr><tr><td>outDir<\/td><td>\u067e\u0648\u0634\u0647 \u062e\u0631\u0648\u062c\u06cc \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc JavaScript \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 (\u0645\u062b\u0644\u0627\u064b .\/build).<\/td><\/tr><tr><td>strict<\/td><td>\u0647\u0645\u0647 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0633\u062e\u062a\u200c\u06af\u06cc\u0631\u0627\u0646\u0647 \u0631\u0627 \u0628\u0631\u0627\u06cc \u06a9\u062f \u0627\u0645\u0646\u200c\u062a\u0631 \u0641\u0639\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/td><\/tr><tr><td>esModuleInterop<\/td><td>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0628\u0627 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc CommonJS \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0645\u0627\u0698\u0648\u0644 ES \u0628\u0647\u0628\u0648\u062f \u0645\u06cc\u200c\u0628\u062e\u0634\u062f.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627 \u0633\u062a\u0648\u0646 \u0641\u0642\u0631\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u200c\u0647\u0627\u06cc \u067e\u0631\u0648\u0698\u0647 TypeScript \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0648 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc\u062a\u0627\u0646 \u0642\u0627\u0628\u0644 \u0633\u0641\u0627\u0631\u0634\u06cc\u200c\u0633\u0627\u0632\u06cc\u200c\u0627\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f1 \u2014 \u0634\u0631\u0648\u0639 \u067e\u0631\u0648\u0698\u0647 TypeScript<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0631 \u06cc\u06a9 \u0646\u06af\u0627\u0647 \u2014 \u06af\u0627\u0645 \u06f1<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># one-liner \u0628\u0631\u0627\u06cc \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u067e\u0631\u0648\u0698\u0647 TypeScript \u062c\u062f\u06cc\u062f\nmkdir typescript-project &amp;&amp; cd typescript-project\nnpm i -D typescript\nnpx tsc --init<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0648\u0636\u06cc\u062d \u062a\u0641\u0635\u06cc\u0644\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f1. \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f \u0648 \u0648\u0627\u0631\u062f\u0634 \u0634\u0648\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir typescript-project\ncd typescript-project<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f2. TypeScript \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062a\u0648\u0633\u0639\u0647 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm i -D typescript<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0644\u06af <code>--save-dev<\/code> \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f TypeScript \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u0644\u0627\u0632\u0645 \u0628\u0627\u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f3. \u067e\u0631\u0648\u0698\u0647 TypeScript \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx tsc --init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u060c \u0641\u0627\u06cc\u0644 tsconfig.json \u0631\u0627 \u0628\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f4. tsconfig.json \u0631\u0627 \u062f\u0631 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\u062a\u0627\u0646 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627\u0632\u0631\u0633\u06cc \u0648 \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano tsconfig.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u06cc\u0634\u062a\u0631 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u06a9\u0627\u0645\u0646\u062a \u0634\u062f\u0647\u200c\u0627\u0646\u062f. \u0645\u062b\u0644\u0627\u064b:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>typescript-project\/tsconfig.json<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"compilerOptions\": {\n    \/* \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0647 https:\/\/aka.ms\/tsconfig.json \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f *\/\n    \/\/ ... (\u062a\u0645\u0627\u0645 \u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc \u06a9\u0627\u0645\u0646\u062a\u200c\u0634\u062f\u0647)\n  }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f\u061b \u0645\u062b\u0644 \u062a\u0646\u0638\u06cc\u0645 <code>\"outDir\": \".\/build\"<\/code> \u0628\u0631\u0627\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0627\u06cc\u0646\u06a9\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u06a9\u062c\u0627 \u0628\u0631\u0648\u0646\u062f.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> \u06af\u0627\u0645 \u06f3 \u0628\u0639\u062f\u0627\u064b \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627 \u0631\u0627 \u0628\u0627 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u200c\u0647\u0627\u06cc \u0646\u0638\u0631\u062f\u0627\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u0645\u0627 \u0631\u0627 \u0633\u0631\u06cc\u0639 \u0634\u0631\u0648\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f2 \u2014 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u067e\u0631\u0648\u0698\u0647 TypeScript<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0631 \u06cc\u06a9 \u0646\u06af\u0627\u0647 \u2014 \u06af\u0627\u0645 \u06f2<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u0641\u0627\u06cc\u0644 TypeScript \u0627\u0635\u0644\u06cc \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u062f\necho \"const world = 'world';\n\nexport function hello(who: string = world): string {\n  return \\`Hello \\${who}!\\`;\n}\n\" &gt; index.ts\n\n# \u067e\u0631\u0648\u0698\u0647 TypeScript \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\nnpx tsc<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0648\u0636\u06cc\u062d \u0628\u06cc\u0634\u062a\u0631<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f1. \u06a9\u062f TypeScript \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u062f\u0631 index.ts \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>typescript-project\/index.ts<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const world = 'world';\n\nexport function hello(who: string = world): string {\n  return `Hello ${who}!`;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f2. \u06a9\u062f\u062a\u0627\u0646 \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx tsc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u060c JavaScript \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u0631\u0627 \u062f\u0631 \u067e\u0648\u0634\u0647 build \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f (\u0627\u06af\u0631 outDir \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0631\u0648\u0698\u0647 \u0628\u0639\u062f \u0627\u0632 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>typescript-project\/\n\u251c\u2500\u2500 build\/\n\u2502   \u251c\u2500\u2500 index.js\n\u2502   \u2514\u2500\u2500 index.js.map\n\u251c\u2500\u2500 index.ts\n\u2514\u2500\u2500 tsconfig.json<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>typescript-project\/build\/index.js<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hello = void 0;\nconst world = 'world';\nfunction hello(who = world) {\n    return `Hello ${who}!`;\n}\nexports.hello = hello;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06a9\u062f \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 Node \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>node build\/index.js<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(\u0628\u062f\u0648\u0646 \u062e\u0631\u0648\u062c\u06cc\u2014\u0645\u06af\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0627\u0628\u0639 \u0631\u0627 Invoke \u06a9\u0646\u06cc\u062f\u061b \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0632\u06cc\u0631 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u062e\u0631\u0648\u062c\u06cc\u060c index.ts \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>console.log(hello());<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u067e\u0633 \u062f\u0648\u0628\u0627\u0631\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx tsc\nnode build\/index.js<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hello world!<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062d\u0627\u0644\u062a Watch \u0628\u0631\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062e\u0648\u062f\u06a9\u0627\u0631:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx tsc -w<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u060c \u06a9\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u0647\u0631 \u0628\u0627\u0631 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06af\u0627\u0645 \u06f3 \u2014 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Google TypeScript Style \u0628\u0631\u0627\u06cc Lint \u0648 \u0627\u0635\u0644\u0627\u062d \u06a9\u062f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0631 \u06cc\u06a9 \u0646\u06af\u0627\u0647 \u2014 \u06af\u0627\u0645 \u06f3<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Google TypeScript Style (GTS) \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\nnpm install --save-dev gts\n\n# GTS \u0631\u0627 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0627\u062a \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\nnpx gts init\n\n# \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0686\u06a9 \u062e\u0637\u0627\u0647\u0627\u06cc lint\nnpm run compile\nnpm run check<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644: \u062e\u0637\u0627\u06cc Lint \u0648 \u0631\u0641\u0639<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06a9\u062f \u0628\u062f (\u0628\u0627 \u062e\u0637\u0627\u06cc lint):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function sayhi(name:string){console.log('Hi, '+name)}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u06a9 lint \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm run check<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>Output\nindex.ts:1:10: Missing space before function parentheses.\nindex.ts:1:20: Missing space after colon.\nindex.ts:1:47: Missing semicolon.\nFound 3 errors.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u06a9\u062f \u0627\u0635\u0644\u0627\u062d\u200c\u0634\u062f\u0647:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function sayHi(name: string) {\n  console.log('Hi, ' + name);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0648\u0636\u06cc\u062d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">GTS\u060c \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0627\u0633\u062a\u0627\u06cc\u0644\u060c Linter \u0648 \u0627\u0635\u0644\u0627\u062d\u200c\u06a9\u0646\u0646\u062f\u0647 \u06a9\u062f \u0631\u0627 \u062f\u0631 \u06cc\u06a9\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0631\u0648\u0698\u0647\u200c\u062a\u0627\u0646 \u0631\u0627 \u0628\u0627 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636\u200c\u0647\u0627\u06cc \u0646\u0638\u0631\u062f\u0627\u0631\u2014including \u06cc\u06a9 tsconfig.json\u060c \u06a9\u0627\u0646\u0641\u06cc\u06af ESLint \u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u200c\u0647\u0627\u06cc npm\u2014Bootstrap \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>npm run compile<\/code> \u2014 \u06a9\u062f TypeScript \u0634\u0645\u0627 \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><code>npm run check<\/code> \u2014 \u062e\u0637\u0627\u0647\u0627\u06cc lint\/\u0627\u0633\u062a\u0627\u06cc\u0644 \u0631\u0627 \u0686\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><code>npm run fix<\/code> \u2014 \u0645\u0633\u0627\u0626\u0644 lint \u0631\u0627 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0631\u0641\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u06a9\u0631\u062f\u0646 \u0642\u0648\u0627\u0646\u06cc\u0646\u060c \u06a9\u0627\u0646\u0641\u06cc\u06af ESLint \u0631\u0627 Extend \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>---\nextends:\n  - '.\/node_modules\/gts'<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc tsconfig.json<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"compilerOptions\": {\n    \"rootDir\": \".\/src\",\n    \"outDir\": \".\/build\",\n    \"strict\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"nodenext\",\n    \"moduleResolution\": \"node\",\n    \"skipLibCheck\": true,\n    \"noUncheckedIndexedAccess\": true\n  }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0646\u0637\u0642 tsconfig.json<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>module: &#8220;nodenext&#8221; \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 commonjs:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 <code>\"nodenext\"<\/code> \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0647\u062f\u0641\u200c\u06af\u06cc\u0631\u0646\u062f\u0647 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc ES \u062f\u0631 Node.js (Node 16+) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u0632 <code>\"commonjs\"<\/code> \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 Node.js \u06cc\u0627 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0642\u062f\u06cc\u0645\u06cc\u200c\u062a\u0631.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>moduleResolution: &#8220;node&#8221; \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 &#8220;bundler&#8221;:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\"node\"<\/code> \u0645\u0646\u0637\u0642 Resolution \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Node.js \u0631\u0627 \u062a\u0642\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u0631\u0627\u06cc \u0633\u0645\u062a \u0633\u0631\u0648\u0631 \u0648 \u0628\u06cc\u0634\u062a\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0627\u0633\u062a. <code>\"bundler\"<\/code> \u0628\u0631\u0627\u06cc \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0641\u0631\u0627\u0646\u062a\u200c\u0627\u0646\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 Vite \u06cc\u0627 Webpack \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b \u06a9\u0647 Resolution \u0631\u0627 \u0645\u062a\u0641\u0627\u0648\u062a \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>skipLibCheck:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0648\u06cc true \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u06cc\u0644\u062f\u0647\u0627 \u0628\u0627 \u0631\u062f \u06a9\u0631\u062f\u0646 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0631\u0648\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 node_modules \u0633\u0631\u06cc\u0639 \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>noUncheckedIndexedAccess:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0645\u0646\u200c\u062a\u0631 \u0628\u0647 \u0622\u0631\u0627\u06cc\u0647\u200c\u0647\u0627 \u0648 Object\u0647\u0627 \u0631\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u0627 \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f\u0646 possibly undefined \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u06cc\u0646\u062f\u06a9\u0633\u06cc \u0645\u06af\u0631 \u0686\u06a9 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0633\u0648\u0631\u0633 \u06a9\u062f \u0631\u0627 \u062f\u0631 src\/ \u0648 \u062e\u0631\u0648\u062c\u06cc \u0631\u0627 \u062f\u0631 build\/ \u06cc\u0627 dist\/ \u0633\u0627\u0632\u0645\u0627\u0646\u200c\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0628\u0631\u0627\u06cc \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\/\u062a\u0648\u0627\u0628\u0639 \u0627\u0632 camelCase \u0648 \u0628\u0631\u0627\u06cc \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\/\u062a\u0627\u06cc\u067e\u200c\u0647\u0627 \u0627\u0632 PascalCase \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0647\u0645\u06cc\u0634\u0647 <code>\"strict\": true<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u0628 \u0645\u0642\u0627\u0648\u0645 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li>\u0627\u0632 interface\u0647\u0627\/type\u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0645\u0636\u0627\u06cc \u0648\u0627\u0636\u062d Object \u0648 \u062a\u0627\u0628\u0639 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627\u06cc\u062c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TypeScript \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0646\u0627\u0631\u06cc\u0648\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u067e\u200c\u0647\u0627\u06cc Node.js \u0648 Express<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0634\u0631\u0648\u0639 \u0633\u0631\u06cc\u0639 (Express):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm i express @types\/express @types\/node<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Express \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 Typing\u0647\u0627\u06cc TypeScript \u0628\u0631\u0627\u06cc Express \u0648 Node \u0631\u0627 \u0646\u0635\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 API\u0647\u0627\u06cc \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 \u0648 Global\u0647\u0627\u06cc Node \u0631\u0627 \u062d\u06cc\u0646 \u062a\u0648\u0633\u0639\u0647 \u0628\u0634\u0646\u0627\u0633\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ index.ts\nimport express from 'express';\nconst app = express();\napp.get('\/', (req, res) =&gt; res.send('Hello from Express + TypeScript!'));\napp.listen(3000, () =&gt; console.log('Server running on http:\/\/localhost:3000'));<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u060c HTTP \u0633\u0631\u0648\u0631 \u0645\u06cc\u0646\u06cc\u0645\u0627\u0644\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 GET \/ \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0631\u0648\u06cc \u067e\u0648\u0631\u062a \u06f3\u06f0\u06f0\u06f0 \u06af\u0648\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647 package.json \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\"scripts\": {\n  \"dev\": \"ts-node index.ts\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a dev\u060c \u0627\u067e \u0631\u0627 \u0628\u0627 ts-node \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u0646 \u0642\u062f\u0645 \u0628\u06cc\u0644\u062f \u062c\u062f\u0627\u06af\u0627\u0646\u0647 Iterate \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0633\u0631\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx ts-node index.ts\n# \u06cc\u0627\nnpm run dev<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062e\u0637\u0627\u06cc \u00abaddress already in use\u00bb \u062f\u06cc\u062f\u06cc\u062f\u060c <code>app.listen(3000)<\/code> \u0631\u0627 \u0628\u0647 \u067e\u0648\u0631\u062a \u0622\u0632\u0627\u062f \u062f\u06cc\u06af\u0631\u06cc (\u0645\u062b\u0644\u0627\u064b 3001) \u062a\u063a\u06cc\u06cc\u0631 \u0628\u062f\u0647\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc \u0628\u0647 <a href=\"http:\/\/localhost:3000\">http:\/\/localhost:3000<\/a> \u0628\u0631\u0648\u06cc\u062f. \u0628\u0627\u06cc\u062f \u00abHello from Express + TypeScript!\u00bb \u0631\u0627 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631\u062a\u0627\u0646 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc React<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0634\u0631\u0648\u0639 \u0633\u0631\u06cc\u0639 (React):<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx create-react-app my-app --template typescript\n# \u06cc\u0627 \u0628\u0627 Vite:\nnpm create vite@latest my-app -- --template react-ts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0646\u0645\u0648\u0646\u0647 Props \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>type GreetingProps = { name: string };\nconst Greeting: React.FC&lt;GreetingProps&gt; = ({ name }) =&gt; (\n  &lt;div&gt;Hello, {name}!&lt;\/div&gt;\n);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0648\u0633\u0639\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\/\u067e\u06a9\u06cc\u062c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>\"declaration\": true<\/code> \u0631\u0627 \u062f\u0631 tsconfig.json \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc .d.ts \u0628\u0631\u0627\u06cc \u0645\u0635\u0631\u0641\u200c\u06a9\u0646\u0646\u062f\u0647\u200c\u0647\u0627 \u062a\u0648\u0644\u06cc\u062f \u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0639\u06cc\u0628\u200c\u06cc\u0627\u0628\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06cc\u0627 \u06a9\u0627\u0631 \u0628\u0627 TypeScript\u060c \u0645\u0628\u062a\u062f\u06cc\u0627\u0646 \u0627\u063a\u0644\u0628 \u0628\u0647 \u0686\u0646\u062f \u0645\u0633\u0626\u0644\u0647 \u0631\u0627\u06cc\u062c \u0628\u0631\u0645\u06cc\u200c\u062e\u0648\u0631\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0628\u0627 \u0622\u0646\u200c\u0647\u0627 \u0631\u0648\u0628\u0647\u200c\u0631\u0648 \u0634\u0648\u06cc\u062f \u0648 \u0646\u062d\u0648\u0647 \u0631\u0641\u0639\u200c\u0634\u0627\u0646 \u0622\u0645\u062f\u0647:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cannot find name &#8216;require&#8217;:<\/strong> \u0627\u06cc\u0646 \u0648\u0642\u062a\u06cc \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0633\u0639\u06cc \u06a9\u0646\u06cc\u062f \u062f\u0631 \u0641\u0627\u06cc\u0644 TypeScript\u0627\u06cc \u0628\u062f\u0648\u0646 \u062a\u0627\u06cc\u067e\u200c\u0647\u0627\u06cc Node.js \u0627\u0632 require \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0646\u0635\u0628 @types\/node \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645 <code>\"moduleResolution\": \"node\"<\/code> \u062f\u0631 tsconfig.json \u0631\u0641\u0639\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>Unexpected token &#8216;export&#8217;:<\/strong> \u0627\u06cc\u0646 \u0648\u0642\u062a\u06cc \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 JavaScript \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647\u200c\u062a\u0627\u0646 \u0627\u0632 \u0645\u0627\u0698\u0648\u0644\u200c\u0647\u0627\u06cc ES \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f \u0627\u0645\u0627 Node.js \u0627\u0646\u062a\u0638\u0627\u0631 CommonJS \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. \u0628\u0627 \u062a\u0646\u0638\u06cc\u0645 <code>\"module\": \"commonjs\"<\/code> \u062f\u0631 tsconfig.json \u06cc\u0627 \u0627\u062c\u0631\u0627\u06cc Node \u0628\u0627 <code>--experimental-modules<\/code> \u0631\u0641\u0639\u0634 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u0646\u0628\u0648\u062f @types\/node:<\/strong> \u0627\u06af\u0631 \u062e\u0637\u0627\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u0641\u0642\u0648\u062f \u0628\u0631\u0627\u06cc Global\u0647\u0627\u06cc Node.js \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f\u060c \u0628\u0627 <code>npm i -D @types\/node<\/code> \u0646\u0635\u0628\u0634\u0627\u0646 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u0645\u0633\u0627\u0626\u0644 esModuleInterop:<\/strong> \u0627\u06af\u0631 Import\u0647\u0627 \u0637\u0628\u0642 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0627\u0631 \u0646\u0645\u06cc\u200c\u06a9\u0646\u0646\u062f (\u0645\u062b\u0644\u0627\u064b \u0628\u0627 Import\u0647\u0627\u06cc default \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 named)\u060c <code>\"esModuleInterop\": true<\/code> \u0631\u0627 \u062f\u0631 tsconfig.json \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f.<\/li>\n\n\n\n<li><strong>\u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc ts-node:<\/strong> \u0627\u06af\u0631 ts-node \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f tsconfig.json \u062f\u0631\u0633\u062a \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0634\u062f\u0647\u060c \u0646\u0633\u062e\u0647 \u062f\u0631\u0633\u062a TypeScript \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f \u0648 \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u0632 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0627 <code>npx ts-node --transpile-only<\/code> \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0637\u0648\u0631 \u067e\u0631\u0648\u0698\u0647 TypeScript \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 TypeScript \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627 \u0628\u0627 \u0627\u06cc\u0646 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm init -y\nnpm i -D typescript\nnpx tsc --init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0647\u062f\u0641 tsconfig.json \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">tsconfig.json \u0646\u062d\u0648\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u062f\u062a\u0627\u0646 \u062a\u0648\u0633\u0637 TypeScript \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u06af\u0632\u06cc\u0646\u0647\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 \u0646\u0633\u062e\u0647 target \u062c\u0627\u0648\u0627\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a\u060c \u0633\u06cc\u0633\u062a\u0645 \u0645\u0627\u0698\u0648\u0644\u060c \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u0631\u06cc\u0634\u0647 \u0648 \u062f\u0627\u06cc\u0631\u06a9\u062a\u0648\u0631\u06cc \u062e\u0631\u0648\u062c\u06cc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0622\u06cc\u0627 \u0628\u0627\u06cc\u062f TypeScript \u0631\u0627 \u0633\u0631\u0627\u0633\u0631\u06cc \u06cc\u0627 \u0645\u062d\u0644\u06cc \u0646\u0635\u0628 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0635\u0628 \u0645\u062d\u0644\u06cc (<code>npm i -D typescript<\/code>) \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u062a\u0627 \u0647\u0645\u0647 \u0627\u0639\u0636\u0627\u06cc \u062a\u06cc\u0645 \u0627\u0632 \u0647\u0645\u0627\u0646 \u0646\u0633\u062e\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f. \u0627\u06af\u0631 tsc \u0631\u0627 \u0647\u0645\u0647\u200c\u062c\u0627 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0633\u0631\u0627\u0633\u0631\u06cc \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0637\u0648\u0631 \u06a9\u062f TypeScript \u0631\u0627 \u0628\u062f\u0648\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0647\u0631 \u0628\u0627\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 ts-node \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061b \u06a9\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc .ts \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx ts-node index.ts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0641\u0627\u0648\u062a tsc \u0648 ts-node \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>tsc:<\/strong> TypeScript \u0631\u0627 \u0628\u0647 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc JavaScript \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li><strong>ts-node:<\/strong> \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc TypeScript \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0628\u062f\u0648\u0646 \u0633\u0627\u062e\u062a \u062e\u0631\u0648\u062c\u06cc\u200c\u0647\u0627\u06cc .js \u062c\u062f\u0627\u06af\u0627\u0646\u0647.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0622\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u0627\u0632 TypeScript \u0628\u0627 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9\u200c\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 React \u06cc\u0627 Express \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0644\u0647. \u0628\u0631\u0627\u06cc React\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0627 \u0627\u06cc\u0646 Scaffold \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx create-react-app my-app --template typescript<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc Express\u060c @types\/express \u0631\u0627 \u0646\u0635\u0628 \u0648 \u0627\u0632 TypeScript \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u062f\u0631 \u062a\u0648\u0633\u0639\u0647 \u0628\u06a9\u200c\u0627\u0646\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0627\u062e\u062a MCP Server \u0628\u0627 TypeScript SDK<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u0627\u062a\u0631 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc \u0633\u0646\u062a\u06cc TypeScript\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 TypeScript \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u06a9\u0647 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0628\u0627 LLM\u0647\u0627 \u062a\u0639\u0627\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u2014\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Model Context Protocol (MCP) TypeScript SDK\u2014\u0647\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. MCP \u0631\u0627\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0634\u062f\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0634\u0627\u06cc Resource\u0647\u0627\u060c Tool\u0647\u0627 \u0648 Prompt\u0647\u0627\u0633\u062a \u062a\u0627 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc AI \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0645\u0635\u0631\u0641 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0645\u0627\u06cc \u06a9\u0644\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MCP TypeScript SDK \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0631\u0627 \u0622\u0633\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0633\u0627\u062e\u062a MCP Server\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Resource \u0627\u0641\u0634\u0627 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f<\/li>\n\n\n\n<li>\u062b\u0628\u062a Tool\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u06cc\u0627 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f<\/li>\n\n\n\n<li>\u062a\u0639\u0631\u06cc\u0641 Prompt\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0631\u0627\u06cc \u0631\u0648\u0646\u062f\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc LLM<\/li>\n\n\n\n<li>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Transport\u0647\u0627\u06cc\u06cc \u0645\u062b\u0644 stdio \u06cc\u0627 Streamable HTTP \u0628\u0631\u0627\u06cc \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0627 \u06a9\u0644\u0627\u06cc\u0646\u062a\u200c\u0647\u0627<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0633\u0627\u062e\u062a \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u200c\u06af\u0631\u0641\u062a\u0647 \u0627\u0632 TypeScript \u06a9\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0631\u0627 \u0627\u0645\u0646 \u0628\u0647 \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 LLM \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0646\u0635\u0628<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MCP SDK \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 npm \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install @modelcontextprotocol\/sdk<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Node.js \u0646\u0633\u062e\u0647 v18 \u06cc\u0627 \u0628\u0627\u0644\u0627\u062a\u0631 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0634\u0631\u0648\u0639 \u0633\u0631\u06cc\u0639<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 MCP Server \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0647\u0633\u062a \u06a9\u0647 \u0627\u0628\u0632\u0627\u0631 \u0645\u0627\u0634\u06cc\u0646\u200c\u062d\u0633\u0627\u0628 \u0648 Resource \u062e\u0648\u0634\u200c\u0622\u0645\u062f\u06af\u0648\u06cc\u06cc \u062f\u0627\u06cc\u0646\u0627\u0645\u06cc\u06a9 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import { McpServer, ResourceTemplate } from '@modelcontextprotocol\/sdk\/server\/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol\/sdk\/server\/stdio.js';\nimport { z } from 'zod';\n\n\/\/ \u0633\u0627\u062e\u062a MCP server\nconst server = new McpServer({\n    name: 'demo-server',\n    version: '1.0.0'\n});\n\n\/\/ \u062b\u0628\u062a \u0627\u0628\u0632\u0627\u0631 \u062c\u0645\u0639\nserver.registerTool(\n    'add',\n    {\n        title: 'Addition Tool',\n        description: 'Add two numbers',\n        inputSchema: { a: z.number(), b: z.number() }\n    },\n    async ({ a, b }) =&gt; ({\n        content: &#91;{ type: 'text', text: String(a + b) }]\n    })\n);\n\n\/\/ \u062b\u0628\u062a resource \u062e\u0648\u0634\u200c\u0622\u0645\u062f\u06af\u0648\u06cc\u06cc \u062f\u0627\u06cc\u0646\u0627\u0645\u06cc\u06a9\nserver.registerResource(\n    'greeting',\n    new ResourceTemplate('greeting:\/\/{name}', { list: undefined }),\n    {\n        title: 'Greeting Resource',\n        description: 'Dynamic greeting generator'\n    },\n    async (uri, { name }) =&gt; ({\n        contents: &#91;\n            {\n                uri: uri.href,\n                text: `Hello, ${name}!`\n            }\n        ]\n    })\n);\n\n\/\/ \u0634\u0631\u0648\u0639 transport \u0627\u0632 \u0637\u0631\u06cc\u0642 stdio\nconst transport = new StdioServerTransport();\nawait server.connect(transport);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u062c\u0631\u0627\u06cc \u0648 \u062a\u0623\u06cc\u06cc\u062f:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx ts-node server.ts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MCP server started and listening for requests via stdio...<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0631\u0627 MCP\u061f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">MCP \u0628\u0627 \u0633\u0631\u0648\u0631\u0647\u0627 \u0645\u062b\u0644 API \u0628\u0631\u0627\u06cc LLM\u0647\u0627 \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Resource\u0647\u0627<\/strong> \u2014 \u0632\u0645\u06cc\u0646\u0647 \u06cc\u0627 \u062f\u0627\u062f\u0647 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f (\u0645\u0634\u0627\u0628\u0647 Endpoint\u0647\u0627\u06cc GET).<\/li>\n\n\n\n<li><strong>Tool\u0647\u0627<\/strong> \u2014 \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f (\u0645\u0634\u0627\u0628\u0647 Endpoint\u0647\u0627\u06cc POST).<\/li>\n\n\n\n<li><strong>Prompt\u0647\u0627<\/strong> \u2014 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0628\u0631\u0627\u06cc \u062a\u0639\u0627\u0645\u0644\u0627\u062a \u0633\u0627\u062e\u062a\u0627\u0631\u06cc\u0627\u0641\u062a\u0647 LLM.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0633\u0627\u062e\u062a \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646\u200c\u0647\u0627\u06cc \u0642\u062f\u0631\u062a\u200c\u06af\u0631\u0641\u062a\u0647 \u0627\u0632 AI \u062f\u0631 TypeScript \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0642\u0627\u0628\u0644 \u062a\u0631\u06a9\u06cc\u0628\u060c \u0642\u0627\u0628\u0644 \u062a\u0633\u062a \u0648 \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627 \u0647\u0633\u062a\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u0627\u06cc \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u060c \u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0631\u0633\u0645\u06cc MCP \u0648 \u0645\u062e\u0632\u0646 TypeScript SDK \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f \u0686\u0637\u0648\u0631 \u067e\u0631\u0648\u0698\u0647 TypeScript \u062c\u062f\u06cc\u062f\u06cc \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc\u060c tsconfig.json \u0631\u0627 \u0628\u0627 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0645\u062f\u0631\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u060c \u06a9\u062f \u0631\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u0648 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u06a9\u062f \u0631\u0627 \u0628\u0627 Google TypeScript Style (GTS) \u0627\u0644\u0632\u0627\u0645\u06cc \u06a9\u0646\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06cc\u0627\u062f \u06af\u0631\u0641\u062a\u06cc\u062f \u0686\u0637\u0648\u0631 \u067e\u0631\u0648\u0698\u0647\u200c\u0647\u0627\u06cc Node.js\/Express \u0648 React \u0631\u0627 \u0628\u0627 TypeScript \u0633\u0627\u062e\u062a\u0627\u0631\u062f\u0647\u06cc \u0648 MCP Server \u0628\u0633\u0627\u0632\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0642\u0628\u0644\u0627\u064b \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0631\u0648\u0698\u0647 Starter \u06cc\u0627 \u0627\u0628\u0632\u0627\u0631\u06cc \u0645\u062b\u0644 Angular CLI \u0628\u0627 TypeScript \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634\u060c \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u0686\u0637\u0648\u0631 \u067e\u0631\u0648\u0698\u0647 TypeScript \u0631\u0627 \u0628\u062f\u0648\u0646 \u06a9\u0645\u06a9 Starter \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u06cc\u0627\u062f \u0645\u06cc\u200c\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062f\u0631 TypeScript \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0686\u0637\u0648\u0631 \u0627\u0632 Linter \u0628\u0627 \u067e\u0631\u0648\u0698\u0647 TypeScript \u062e\u0648\u062f\u062a\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 \u0631\u0627\u0647\u0646\u0645\u0627 \u0634\u0645\u0627 &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7050,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[190,2183],"tags":[],"class_list":["post-7049","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-2183"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7049","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7049"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7049\/revisions"}],"predecessor-version":[{"id":7051,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7049\/revisions\/7051"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7050"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}