{"id":41441,"date":"2026-04-26T17:00:56","date_gmt":"2026-04-26T14:00:56","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=41441"},"modified":"2026-04-26T17:00:56","modified_gmt":"2026-04-26T14:00:56","slug":"typescript-betiklerini-ts-node-ile-calistirma-kilavuzu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/","title":{"rendered":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu"},"content":{"rendered":"<p><body><\/p>\n<h2>TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu<\/h2>\n<p>TypeScript, modern web geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015f, JavaScript&#8217;in s\u00fcper k\u00fcmesi olarak bilinen g\u00fc\u00e7l\u00fc bir programlama dilidir. Tip g\u00fcvenli\u011fi, daha iyi kod okunabilirli\u011fi ve b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar i\u00e7in sundu\u011fu avantajlarla geli\u015ftiricilerin tercih sebebi olmu\u015ftur. Ancak TypeScript&#8217;in bu faydalar\u0131ndan yararlan\u0131rken kar\u015f\u0131la\u015f\u0131lan temel bir zorluk vard\u0131r: Taray\u0131c\u0131lar ve Node.js gibi \u00e7al\u0131\u015fma zaman\u0131 ortamlar\u0131 do\u011frudan TypeScript kodunu anlayamaz. Bu durum, TypeScript kodunun \u00e7al\u0131\u015ft\u0131r\u0131lmadan \u00f6nce standart JavaScript&#8217;e derlenmesini (transpile) gerektirir. Geleneksel olarak bu i\u015flem, <code>tsc<\/code> (TypeScript Compiler) komutuyla yap\u0131l\u0131r ve ard\u0131ndan ortaya \u00e7\u0131kan JavaScript dosyalar\u0131 Node.js ile \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu, geli\u015ftirme s\u00fcrecinde s\u00fcrekli bir &#8220;derle ve \u00e7al\u0131\u015ft\u0131r&#8221; d\u00f6ng\u00fcs\u00fc olu\u015fturarak geli\u015ftirici deneyimini yava\u015flatabilir. \u0130\u015fte tam da bu noktada <code>ts-node<\/code> devreye girerek bu s\u00fcreci k\u00f6kten basitle\u015ftirir ve geli\u015ftirme h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<p>Bu makalede, <code>ts-node<\/code>&#8216;un ne oldu\u011funu, nas\u0131l kuruldu\u011funu, temel ve geli\u015fmi\u015f kullan\u0131m senaryolar\u0131n\u0131, hata ay\u0131klama entegrasyonlar\u0131n\u0131, s\u0131n\u0131rlamalar\u0131n\u0131 ve alternatiflerini detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Amac\u0131m\u0131z, <code>ts-node<\/code>&#8216;u kullanarak TypeScript betiklerini sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kapsaml\u0131 bir rehber sunmakt\u0131r.<\/p>\n<h3>TypeScript ve JavaScript Aras\u0131ndaki K\u00f6pr\u00fc<\/h3>\n<p>TypeScript&#8217;in temel amac\u0131, geli\u015ftirme s\u00fcrecinde hatalar\u0131 erken yakalamak ve kodun daha s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flamakt\u0131r. Bunu, de\u011fi\u015fkenlere, fonksiyon parametrelerine ve d\u00f6n\u00fc\u015f de\u011ferlerine tipler atayarak yapar. Ancak bir TypeScript dosyas\u0131n\u0131 (<code>.ts<\/code> veya <code>.tsx<\/code>) do\u011frudan Node.js ile \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda, Node.js bu s\u00f6zdizimini tan\u0131maz ve bir hata f\u0131rlat\u0131r. Bu nedenle, TypeScript kodu \u00f6nce JavaScript&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fclmelidir. Bu d\u00f6n\u00fc\u015ft\u00fcrme i\u015flemine &#8220;derleme&#8221; veya &#8220;transpiling&#8221; denir ve TypeScript derleyicisi (<code>tsc<\/code>) taraf\u0131ndan ger\u00e7ekle\u015ftirilir.<\/p>\n<p>Geleneksel geli\u015ftirme ak\u0131\u015f\u0131 genellikle \u015f\u00f6yledir:<br \/>\n1.  TypeScript kodunu yaz\u0131n (<code>src\/index.ts<\/code>).<br \/>\n2.  <code>tsc<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak kodu JavaScript&#8217;e derleyin (<code>dist\/index.js<\/code>).<br \/>\n3.  Derlenmi\u015f JavaScript dosyas\u0131n\u0131 Node.js ile \u00e7al\u0131\u015ft\u0131r\u0131n (<code>node dist\/index.js<\/code>).<\/p>\n<p>Bu ad\u0131mlar, \u00f6zellikle k\u00fc\u00e7\u00fck de\u011fi\u015fiklikler yap\u0131ld\u0131\u011f\u0131nda veya bir beti\u011fi h\u0131zl\u0131ca test etmek istendi\u011finde zaman al\u0131c\u0131 ve tekrarlay\u0131c\u0131 olabilir. Her de\u011fi\u015fiklikte manuel olarak derleme yapmak veya bir dosya izleyici (file watcher) kullanmak bile ek bir karma\u015f\u0131kl\u0131k getirir. <code>ts-node<\/code>, bu ara ad\u0131m\u0131 ortadan kald\u0131rarak TypeScript kodunu do\u011frudan \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r, t\u0131pk\u0131 Node.js&#8217;in JavaScript kodunu \u00e7al\u0131\u015ft\u0131rmas\u0131 gibi. Bu, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc h\u0131zland\u0131r\u0131r ve geli\u015ftirici verimlili\u011fini art\u0131r\u0131r.<\/p>\n<h3>ts-node Nedir?<\/h3>\n<p><code>ts-node<\/code>, Node.js i\u00e7in TypeScript \u00e7al\u0131\u015ft\u0131rma ortam\u0131d\u0131r. TypeScript kodunu Node.js \u00fczerinde do\u011frudan, derleme ad\u0131m\u0131na gerek kalmadan \u00e7al\u0131\u015ft\u0131rmay\u0131 sa\u011flar. Temel olarak, <code>ts-node<\/code> Node.js&#8217;in <code>require<\/code> mekanizmas\u0131n\u0131 (veya ES mod\u00fclleri i\u00e7in <code>import<\/code> kancalar\u0131n\u0131) kullanarak, bir <code>.ts<\/code> dosyas\u0131 y\u00fcklendi\u011finde onu an\u0131nda JavaScript&#8217;e derler ve ard\u0131ndan Node.js&#8217;in bu JavaScript kodunu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar. Bu &#8220;an\u0131nda derleme&#8221; (on-the-fly compilation) yakla\u015f\u0131m\u0131, geli\u015ftirme s\u00fcrecini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<\/p>\n<p><code>ts-node<\/code>&#8216;un sundu\u011fu temel avantajlar \u015funlard\u0131r:<br \/>\n*   <strong>H\u0131zl\u0131 Geli\u015ftirme D\u00f6ng\u00fcs\u00fc:<\/strong> Kodu her de\u011fi\u015ftirdi\u011finizde manuel derleme yapman\u0131za gerek kalmaz. Sadece beti\u011fi \u00e7al\u0131\u015ft\u0131r\u0131n ve <code>ts-node<\/code> gerisini halleder.<br \/>\n*   <strong>Basitle\u015ftirilmi\u015f Betik \u00c7al\u0131\u015ft\u0131rma:<\/strong> Tek bir komutla TypeScript betiklerini \u00e7al\u0131\u015ft\u0131rabilirsiniz. <code>package.json<\/code> i\u00e7indeki script&#8217;leri veya CLI ara\u00e7lar\u0131n\u0131 TypeScript ile yazmak \u00e7ok daha kolay hale gelir.<br \/>\n*   <strong>Kolay Hata Ay\u0131klama:<\/strong> Hata ay\u0131klama deneyimi, do\u011frudan JavaScript kodunu hata ay\u0131kl\u0131yormu\u015f gibi hissettirir, \u00e7\u00fcnk\u00fc <code>ts-node<\/code> kaynak haritalar\u0131 (source maps) sayesinde orijinal TypeScript kodunuzda hata ay\u0131klama yapman\u0131za olanak tan\u0131r.<br \/>\n*   <strong>REPL Deste\u011fi:<\/strong> <code>ts-node<\/code>&#8216;u parametresiz \u00e7al\u0131\u015ft\u0131rarak interaktif bir TypeScript REPL (Read-Eval-Print Loop) ortam\u0131na eri\u015febilirsiniz. Bu, h\u0131zl\u0131 prototipleme ve TypeScript kodunu deneme i\u00e7in idealdir.<br \/>\n*   <strong>TypeScript Yap\u0131land\u0131rmas\u0131 ile Uyum:<\/strong> Projenizin <code>tsconfig.json<\/code> dosyas\u0131n\u0131 otomatik olarak alg\u0131lar ve i\u00e7indeki derleyici se\u00e7eneklerini (<code>target<\/code>, <code>module<\/code>, <code>baseUrl<\/code>, <code>paths<\/code> vb.) kullanarak kodu derler.<\/p>\n<h3>Kurulum<\/h3>\n<p><code>ts-node<\/code>&#8216;u kullanmaya ba\u015flamadan \u00f6nce, sisteminizde baz\u0131 \u00f6n ko\u015fullar\u0131n kurulu olmas\u0131 gerekmektedir.<\/p>\n<h4>\u00d6n Ko\u015fullar<\/h4>\n<p>1.  <strong>Node.js ve npm\/yarn:<\/strong> <code>ts-node<\/code> bir Node.js paketi oldu\u011fu i\u00e7in, sisteminizde Node.js ve paket y\u00f6neticisi (npm veya yarn) kurulu olmal\u0131d\u0131r. Node.js&#8217;in resmi web sitesinden indirebilir veya <code>nvm<\/code> (Node Version Manager) gibi bir ara\u00e7la kurabilirsiniz.<br \/>\n2.  <strong>TypeScript:<\/strong> <code>ts-node<\/code>&#8216;un d\u00fczg\u00fcn \u00e7al\u0131\u015fabilmesi i\u00e7in TypeScript derleyicisinin de kurulu olmas\u0131 gerekir. Genellikle <code>ts-node<\/code> ile birlikte kurulur, ancak bazen ayr\u0131 olarak da kurulmas\u0131 gerekebilir.<\/p>\n<h4>ts-node Kurulumu<\/h4>\n<p><code>ts-node<\/code>&#8216;u projenize iki farkl\u0131 \u015fekilde kurabilirsiniz: yerel (local) veya global. \u00c7o\u011fu proje i\u00e7in yerel kurulum tercih edilen y\u00f6ntemdir.<\/p>\n<p><strong>Yerel Kurulum (\u00d6nerilen):<\/strong><br \/>\nBir proje i\u00e7inde <code>ts-node<\/code>&#8216;u yerel olarak kurmak, projenin ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole eder ve farkl\u0131 projelerde farkl\u0131 <code>ts-node<\/code> veya TypeScript versiyonlar\u0131 kullanman\u0131za olanak tan\u0131r. Bu, \u00f6zellikle ekip ortamlar\u0131nda veya s\u00fcrekli entegrasyon (CI) sistemlerinde tutarl\u0131l\u0131k sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">npm install -D ts-node typescript\n<h2>veya yarn kullan\u0131yorsan\u0131z<\/h2>\nyarn add -D ts-node typescript<\/code><\/pre>\n<p>Buradaki <code>-D<\/code> veya <code>--save-dev<\/code> bayra\u011f\u0131, <code>ts-node<\/code> ve <code>typescript<\/code>&#8216;i sadece geli\u015ftirme ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 (dev dependency) olarak kaydeder. Bunun nedeni, <code>ts-node<\/code>&#8216;un genellikle \u00fcretim ortam\u0131nda kullan\u0131lmamas\u0131 ve sadece geli\u015ftirme s\u0131ras\u0131nda kodunuzu \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gerekli olmas\u0131d\u0131r.<\/p>\n<p>Yerel olarak kurduktan sonra, <code>ts-node<\/code> komutunu do\u011frudan \u00e7al\u0131\u015ft\u0131ramazs\u0131n\u0131z. Bunun yerine, <code>npx<\/code> komutunu kullanman\u0131z veya <code>package.json<\/code> script&#8217;leri arac\u0131l\u0131\u011f\u0131yla \u00e7a\u011f\u0131rman\u0131z gerekir. <code>npx<\/code>, <code>node_modules\/.bin<\/code> i\u00e7indeki y\u00fcr\u00fct\u00fclebilir dosyalar\u0131 bulup \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131yan bir npm arac\u0131d\u0131r.<\/p>\n<p><strong>Global Kurulum (Daha az \u00f6nerilen):<\/strong><br \/>\n<code>ts-node<\/code>&#8216;u global olarak kurmak, onu sisteminizdeki herhangi bir yerden do\u011frudan <code>ts-node<\/code> komutunu kullanarak \u00e7al\u0131\u015ft\u0131rman\u0131za izin verir. Bu, \u00f6zellikle h\u0131zl\u0131 prototipleme, tek seferlik betikler veya interaktif REPL kullan\u0131m\u0131 i\u00e7in uygun olabilir. Ancak, farkl\u0131 projelerde farkl\u0131 TypeScript versiyonlar\u0131 kullanma esnekli\u011fini k\u0131s\u0131tlar ve ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131na yol a\u00e7abilir.<\/p>\n<pre><code class=\"language-bash\">npm install -g ts-node typescript\n<h2>veya yarn kullan\u0131yorsan\u0131z<\/h2>\nyarn global add ts-node typescript<\/code><\/pre>\n<p>Global kurulum yapt\u0131ktan sonra, <code>ts-node<\/code> komutunu do\u011frudan terminalinizden \u00e7a\u011f\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">ts-node your-script.ts<\/code><\/pre>\n<p>Genel kural olarak, projenizin k\u00f6k dizininde yerel kurulum yapmay\u0131 tercih edin.<\/p>\n<h3>Temel Kullan\u0131m<\/h3>\n<p><code>ts-node<\/code>&#8216;un kurulumu tamamland\u0131ktan sonra, TypeScript betiklerini \u00e7al\u0131\u015ft\u0131rmak olduk\u00e7a basittir.<\/p>\n<h4>Basit Bir TypeScript Beti\u011fi Olu\u015fturma<\/h4>\n<p>\u00d6ncelikle, \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131z basit bir TypeScript dosyas\u0131 olu\u015ftural\u0131m. Projenizin k\u00f6k dizininde <code>src<\/code> ad\u0131nda bir klas\u00f6r olu\u015fturun ve i\u00e7ine <code>index.ts<\/code> ad\u0131nda bir dosya ekleyin:<\/p>\n<pre><code class=\"language-typescript\">\/\/ src\/index.ts\nfunction greet(name: string): string {\n    return <code>Merhaba, ${name}! ts-node ile \u00e7al\u0131\u015f\u0131yorum.<\/code>;\n}\n\nconst userName: string = \"D\u00fcnya\";\nconsole.log(greet(userName));\n\n\/\/ Bir asenkron i\u015flem de ekleyelim\nasync function fetchData(): Promise<string> {\n    return new Promise((resolve) => {\n        setTimeout(() => {\n            resolve(\"Veri ba\u015far\u0131yla \u00e7ekildi!\");\n        }, 1000);\n    });\n}\n\nfetchData().then(data => console.log(data));<\/code><\/pre>\n<h4>Beti\u011fi \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>\u015eimdi bu beti\u011fi <code>ts-node<\/code> ile \u00e7al\u0131\u015ft\u0131ral\u0131m. E\u011fer yerel kurulum yapt\u0131ysan\u0131z, <code>npx<\/code> kullanman\u0131z gerekecektir:<\/p>\n<pre><code class=\"language-bash\">npx ts-node src\/index.ts<\/code><\/pre>\n<p>E\u011fer global kurulum yapt\u0131ysan\u0131z (veya <code>ts-node<\/code> PATH&#8217;inizde ise):<\/p>\n<pre><code class=\"language-bash\">ts-node src\/index.ts<\/code><\/pre>\n<p>Her iki durumda da \u00e7\u0131kt\u0131y\u0131 terminalinizde g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">Merhaba, D\u00fcnya! ts-node ile \u00e7al\u0131\u015f\u0131yorum.\nVeri ba\u015far\u0131yla \u00e7ekildi!<\/code><\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, <code>ts-node<\/code> derleme ad\u0131m\u0131n\u0131 sizin i\u00e7in otomatik olarak halletti ve kodu do\u011frudan \u00e7al\u0131\u015ft\u0131rd\u0131.<\/p>\n<h4>package.json Scriptleri ile Kullan\u0131m<\/h4>\n<p>\u00c7o\u011fu Node.js projesinde, betikleri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>package.json<\/code> dosyas\u0131ndaki <code>scripts<\/code> b\u00f6l\u00fcm\u00fc kullan\u0131l\u0131r. <code>ts-node<\/code>&#8216;u bu script&#8217;lere entegre etmek, geli\u015ftirme s\u00fcrecini daha da d\u00fczenli hale getirir.<\/p>\n<p><code>package.json<\/code> dosyan\u0131z\u0131 a\u00e7\u0131n ve <code>scripts<\/code> b\u00f6l\u00fcm\u00fcne bir <code>start<\/code> veya <code>dev<\/code> script&#8217;i ekleyin:<\/p>\n<pre><code class=\"language-json\">\/\/ package.json\n{\n  \"name\": \"my-ts-project\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"ts-node src\/index.ts\",\n    \"dev\": \"ts-node --project tsconfig.json src\/index.ts\",\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"keywords\": [],\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"devDependencies\": {\n    \"ts-node\": \"^10.9.1\",\n    \"typescript\": \"^5.2.2\"\n  }\n}<\/code><\/pre>\n<p>\u015eimdi beti\u011fi a\u015fa\u011f\u0131daki gibi \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">npm run start\n<h2>veya<\/h2>\nyarn start<\/code><\/pre>\n<p>Bu y\u00f6ntem, projenizdeki di\u011fer geli\u015ftiricilerin de ayn\u0131 komutlar\u0131 kullanarak betikleri \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar ve <code>ts-node<\/code>&#8216;un yerel kurulumunu otomatik olarak kullan\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Kullan\u0131m ve Yap\u0131land\u0131rma<\/h3>\n<p><code>ts-node<\/code>, basit kullan\u0131m\u0131n\u0131n \u00f6tesinde, projenizin ihtiya\u00e7lar\u0131na g\u00f6re \u00f6zelle\u015ftirebilece\u011finiz bir\u00e7ok geli\u015fmi\u015f se\u00e7ene\u011fe sahiptir.<\/p>\n<h4>TypeScript Yap\u0131land\u0131rmas\u0131 (tsconfig.json)<\/h4>\n<p><code>ts-node<\/code>, projenizin k\u00f6k dizininde bulunan <code>tsconfig.json<\/code> dosyas\u0131n\u0131 otomatik olarak alg\u0131lar ve i\u00e7indeki derleyici se\u00e7eneklerini (<code>compilerOptions<\/code>) kullanarak kodu derler. Bu, <code>ts-node<\/code>&#8216;un projenizin TypeScript ayarlar\u0131yla tam uyumlu \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>\u00d6rnek bir <code>tsconfig.json<\/code> dosyas\u0131:<\/p>\n<pre><code class=\"language-json\">\/\/ tsconfig.json\n{\n  \"compilerOptions\": {\n    \"target\": \"es2020\",             \/<em> Hedef JavaScript s\u00fcr\u00fcm\u00fc <\/em>\/\n    \"module\": \"commonjs\",           \/<em> Mod\u00fcl sistemi (Node.js i\u00e7in yayg\u0131n) <\/em>\/\n    \"lib\": [\"es2020\", \"dom\"],       \/<em> Kullan\u0131lan k\u00fct\u00fcphane dosyalar\u0131 <\/em>\/\n    \"strict\": true,                 \/<em> T\u00fcm kat\u0131 tip kontrol se\u00e7eneklerini etkinle\u015ftir <\/em>\/\n    \"esModuleInterop\": true,        \/<em> CommonJS\/ES mod\u00fclleri aras\u0131nda uyumluluk <\/em>\/\n    \"skipLibCheck\": true,           \/<em> T\u00fcm deklarasyon dosyalar\u0131nda tip kontrol\u00fcn\u00fc atla <\/em>\/\n    \"forceConsistentCasingInFileNames\": true, \/<em> Dosya adlar\u0131nda b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf tutarl\u0131l\u0131\u011f\u0131n\u0131 zorla <\/em>\/\n    \"outDir\": \".\/dist\",             \/<em> Derlenmi\u015f JS dosyalar\u0131n\u0131n \u00e7\u0131kaca\u011f\u0131 dizin (ts-node taraf\u0131ndan g\u00f6z ard\u0131 edilir) <\/em>\/\n    \"baseUrl\": \".\/src\",             \/<em> Mod\u00fcl \u00e7\u00f6z\u00fcmlemesi i\u00e7in temel URL <\/em>\/\n    \"paths\": {                      \/<em> Mod\u00fcl takma adlar\u0131 <\/em>\/\n      \"@utils\/<em>\": [\"utils\/<\/em>\"],\n      \"@config\": [\"config\/index.ts\"]\n    }\n  },\n  \"include\": [\n    \"src\/<em><\/em>\/<em>.ts\"                   \/<\/em> Derlenecek TypeScript dosyalar\u0131n\u0131 dahil et *\/\n  ],\n  \"exclude\": [\n    \"node_modules\",                 \/<em> Hari\u00e7 tutulacak dizinler <\/em>\/\n    \"<em><\/em>\/*.spec.ts\"\n  ]\n}<\/code><\/pre>\n<p><code>ts-node<\/code>, <code>outDir<\/code> gibi \u00e7\u0131kt\u0131ya y\u00f6nelik ayarlar\u0131 g\u00f6z ard\u0131 eder, \u00e7\u00fcnk\u00fc kendisi dosya \u00e7\u0131kt\u0131s\u0131 olu\u015fturmaz. Ancak <code>target<\/code>, <code>module<\/code>, <code>baseUrl<\/code>, <code>paths<\/code>, <code>strict<\/code> gibi derleme davran\u0131\u015f\u0131n\u0131 etkileyen t\u00fcm ayarlar\u0131 dikkate al\u0131r. \u00d6zellikle <code>baseUrl<\/code> ve <code>paths<\/code> ayarlar\u0131, mod\u00fcl \u00e7\u00f6z\u00fcmlemesi i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4>ts-node Se\u00e7enekleri<\/h4>\n<p><code>ts-node<\/code>&#8216;u \u00e7al\u0131\u015ft\u0131r\u0131rken \u00e7e\u015fitli komut sat\u0131r\u0131 se\u00e7enekleri veya ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla davran\u0131\u015f\u0131n\u0131 \u00f6zelle\u015ftirebilirsiniz.<\/p>\n<p>*   <code>--project <path><\/code> veya <code>-P <path><\/code>: <code>ts-node<\/code>&#8216;un belirli bir <code>tsconfig.json<\/code> dosyas\u0131n\u0131 kullanmas\u0131n\u0131 sa\u011flar. E\u011fer projenizin k\u00f6k dizininde birden fazla <code>tsconfig.json<\/code> varsa veya varsay\u0131lan\u0131n d\u0131\u015f\u0131nda bir dosya kullanmak istiyorsan\u0131z faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">npx ts-node --project .\/configs\/tsconfig.dev.json src\/index.ts<\/code><\/pre>\n<p>*   <code>--compiler <module><\/code>: Varsay\u0131lan TypeScript derleyicisi yerine farkl\u0131 bir derleyici kullanman\u0131z\u0131 sa\u011flar. \u00d6rne\u011fin, <code>ttypescript<\/code> gibi \u00f6zel d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fclerle (transformers) \u00e7al\u0131\u015fan bir derleyiciyi kullanabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">npx ts-node --compiler ttypescript src\/index.ts<\/code><\/pre>\n<p>*   <code>--require <module><\/code> veya <code>-r <module><\/code>: Betik \u00e7al\u0131\u015ft\u0131r\u0131lmadan \u00f6nce belirli bir Node.js mod\u00fcl\u00fcn\u00fc y\u00fckler. Bu, genellikle <code>source-map-support\/register<\/code> gibi mod\u00fclleri y\u00fcklemek i\u00e7in kullan\u0131l\u0131r, b\u00f6ylece hata izleri (stack traces) orijinal TypeScript kaynak kodunu g\u00f6sterir.<\/p>\n<pre><code class=\"language-bash\">npx ts-node --require source-map-support\/register src\/index.ts<\/code><\/pre>\n<p>*   <code>--transpile-only<\/code>: Tip kontrol\u00fcn\u00fc atlar ve sadece kodu JavaScript&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu, b\u00fcy\u00fck projelerde ba\u015flang\u0131\u00e7 s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131rabilir, ancak tip g\u00fcvenli\u011fini garanti etmez. Tip hatalar\u0131 sadece IDE&#8217;nizde veya ayr\u0131 bir <code>tsc<\/code> komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda g\u00f6r\u00fcn\u00fcr olacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">npx ts-node --transpile-only src\/index.ts<\/code><\/pre>\n<p>*   <code>--esm<\/code>: Deneysel ES Mod\u00fclleri (ESM) deste\u011fini etkinle\u015ftirir. Node.js&#8217;in <code>--experimental-modules<\/code> bayra\u011f\u0131na benzer \u015fekilde \u00e7al\u0131\u015f\u0131r. <code>.mjs<\/code> veya <code>.mts<\/code> uzant\u0131l\u0131 dosyalar i\u00e7in veya <code>package.json<\/code> i\u00e7inde <code>\"type\": \"module\"<\/code> belirtilmi\u015f projeler i\u00e7in gereklidir.<\/p>\n<pre><code class=\"language-bash\">node --loader ts-node\/esm src\/index.ts # Node.js 16+ i\u00e7in \u00f6nerilen yol\n    # veya eski Node.js versiyonlar\u0131 i\u00e7in\n    npx ts-node --esm src\/index.ts<\/code><\/pre>\n<p>*   <code>--files<\/code>: <code>tsconfig.json<\/code> i\u00e7indeki <code>files<\/code> dizisinde belirtilen t\u00fcm dosyalar\u0131 zorunlu olarak y\u00fckler. Normalde <code>ts-node<\/code> sadece <code>require<\/code> edilen dosyalar\u0131 i\u015fler.<\/p>\n<p>*   <strong>Ortam De\u011fi\u015fkenleri ile Yap\u0131land\u0131rma:<\/strong> Komut sat\u0131r\u0131 se\u00e7eneklerine ek olarak, <code>ts-node<\/code>&#8216;u ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla da yap\u0131land\u0131rabilirsiniz. \u00d6rne\u011fin:<br \/>\n    *   <code>TS_NODE_PROJECT<\/code>: <code>--project<\/code> ile ayn\u0131 i\u015flevi g\u00f6r\u00fcr.<br \/>\n    *   <code>TS_NODE_COMPILER_OPTIONS<\/code>: <code>tsconfig.json<\/code> i\u00e7indeki <code>compilerOptions<\/code>&#8216;\u0131 ge\u00e7ersiz k\u0131lar. JSON format\u0131nda bir dize al\u0131r.<br \/>\n    *   <code>TS_NODE_TRANSPHILE_ONLY<\/code>: <code>--transpile-only<\/code> ile ayn\u0131 i\u015flevi g\u00f6r\u00fcr.<\/p>\n<h4>REPL Kullan\u0131m\u0131<\/h4>\n<p><code>ts-node<\/code>&#8216;u herhangi bir dosya ad\u0131 belirtmeden \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, interaktif bir TypeScript REPL oturumu ba\u015flat\u0131r. Bu, h\u0131zl\u0131 testler yapmak, TypeScript s\u00f6zdizimini denemek veya k\u00fc\u00e7\u00fck kod par\u00e7ac\u0131klar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in harika bir yoldur.<\/p>\n<pre><code class=\"language-bash\">npx ts-node<\/code><\/pre>\n<p>veya global kurulum yapt\u0131ysan\u0131z:<\/p>\n<pre><code class=\"language-bash\">ts-node<\/code><\/pre>\n<p>Ard\u0131ndan terminalinizde TypeScript kodu yaz\u0131p an\u0131nda sonu\u00e7lar\u0131n\u0131 g\u00f6rebilirsiniz:<\/p>\n<pre><code class=\"language-\">> const message: string = \"Merhaba REPL!\";\nundefined\n> console.log(message);\nMerhaba REPL!\nundefined\n> class Greeter { constructor(public name: string) {} greet() { return <code>Hello, ${this.name}!<\/code>; } }\nundefined\n> const greeter = new Greeter(\"TypeScript\");\nundefined\n> greeter.greet();\n'Hello, TypeScript!'\n> .exit \/\/ REPL'den \u00e7\u0131kmak i\u00e7in<\/code><\/pre>\n<h3>ts-node ve Mod\u00fcl \u00c7\u00f6z\u00fcmlemesi<\/h3>\n<p>TypeScript projelerinde, mod\u00fcl \u00e7\u00f6z\u00fcmlemesi (<code>import<\/code> veya <code>require<\/code> ifadelerinin ger\u00e7ek dosya yollar\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fclmesi) karma\u015f\u0131k bir konu olabilir. \u00d6zellikle <code>tsconfig.json<\/code> i\u00e7indeki <code>baseUrl<\/code> ve <code>paths<\/code> se\u00e7enekleri, mod\u00fcl takma adlar\u0131 (alias) tan\u0131mlayarak daha temiz i\u00e7e aktarma yollar\u0131 olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<p>\u00d6rne\u011fin, <code>src\/utils\/math.ts<\/code> dosyan\u0131z varsa ve <code>src\/index.ts<\/code> dosyas\u0131ndan ona <code>@utils\/math<\/code> takma ad\u0131yla eri\u015fmek istiyorsan\u0131z:<\/p>\n<pre><code class=\"language-json\">\/\/ tsconfig.json\n{\n  \"compilerOptions\": {\n    \"baseUrl\": \".\/src\",\n    \"paths\": {\n      \"@utils\/<em>\": [\"utils\/<\/em>\"]\n    }\n  }\n}<\/code><\/pre>\n<pre><code class=\"language-typescript\">\/\/ src\/utils\/math.ts\nexport function add(a: number, b: number): number {\n    return a + b;\n}<\/code><\/pre>\n<pre><code class=\"language-typescript\">\/\/ src\/index.ts\nimport { add } from '@utils\/math'; \/\/ Takma ad ile i\u00e7e aktarma\n\nconsole.log(<code>2 + 3 = ${add(2, 3)}<\/code>);<\/code><\/pre>\n<p><code>ts-node<\/code>, <code>tsconfig.json<\/code> dosyan\u0131zdaki <code>baseUrl<\/code> ve <code>paths<\/code> ayarlar\u0131n\u0131 otomatik olarak yorumlar ve mod\u00fcl \u00e7\u00f6z\u00fcmlemesini buna g\u00f6re yapar. Bu, geli\u015ftirme s\u0131ras\u0131nda karma\u015f\u0131k i\u00e7e aktarma yollar\u0131yla u\u011fra\u015fmadan kodunuzu d\u00fczenli tutman\u0131z\u0131 sa\u011flar. E\u011fer <code>ts-node<\/code> mod\u00fcl \u00e7\u00f6z\u00fcmlemesi ile ilgili sorunlar ya\u015farsa, <code>tsconfig-paths<\/code> gibi ek bir paket kullanman\u0131z gerekebilir. Bu paket, Node.js&#8217;in mod\u00fcl \u00e7\u00f6z\u00fcmlemesini <code>tsconfig.json<\/code>&#8216;daki <code>paths<\/code> ile uyumlu hale getiren bir <code>require<\/code> kancas\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">npm install -D tsconfig-paths<\/code><\/pre>\n<p>Ard\u0131ndan <code>package.json<\/code> script&#8217;inizde veya komut sat\u0131r\u0131nda <code>ts-node<\/code> ile birlikte kullanabilirsiniz:<\/p>\n<pre><code class=\"language-json\">\"scripts\": {\n  \"start\": \"ts-node -r tsconfig-paths\/register src\/index.ts\"\n}<\/code><\/pre>\n<h3>ts-node ile Hata Ay\u0131klama (Debugging)<\/h3>\n<p><code>ts-node<\/code>, Node.js&#8217;in yerle\u015fik hata ay\u0131klama ara\u00e7lar\u0131yla ve pop\u00fcler IDE&#8217;lerle (\u00f6zellikle VS Code) sorunsuz bir \u015fekilde entegre olur. Bu, TypeScript kodunuzda do\u011frudan hata ay\u0131klama yapman\u0131z\u0131 sa\u011flar, t\u0131pk\u0131 derlenmi\u015f JavaScript kodunda hata ay\u0131klama yapar gibi.<\/p>\n<p><strong>Node.js Hata Ay\u0131klama Protokol\u00fc ile:<\/strong><br \/>\nNode.js, V8 Inspector protokol\u00fc arac\u0131l\u0131\u011f\u0131yla hata ay\u0131klama deste\u011fi sunar. <code>ts-node<\/code> ile bir beti\u011fi hata ay\u0131klama modunda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>node<\/code> komutuna <code>--inspect<\/code> veya <code>--inspect-brk<\/code> bayra\u011f\u0131n\u0131 eklemeniz ve ard\u0131ndan <code>ts-node<\/code>&#8216;u \u00e7a\u011f\u0131rman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">node --inspect-brk npx ts-node src\/index.ts<\/code><\/pre>\n<p>*   <code>--inspect-brk<\/code>: Kodun ilk sat\u0131r\u0131nda duraklat\u0131r ve hata ay\u0131klay\u0131c\u0131n\u0131n ba\u011flanmas\u0131n\u0131 bekler.<br \/>\n*   <code>--inspect<\/code>: Kodun \u00e7al\u0131\u015fmas\u0131na izin verir ve hata ay\u0131klay\u0131c\u0131n\u0131n istedi\u011fi zaman ba\u011flanmas\u0131na izin verir.<\/p>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, terminalinizde bir URL (<code>ws:\/\/127.0.0.1:9229\/...<\/code>) g\u00f6receksiniz. Bu URL&#8217;yi Chrome taray\u0131c\u0131n\u0131z\u0131n adres \u00e7ubu\u011funa yap\u0131\u015ft\u0131rarak Chrome Geli\u015ftirici Ara\u00e7lar\u0131&#8217;n\u0131n hata ay\u0131klay\u0131c\u0131s\u0131n\u0131 a\u00e7abilirsiniz.<\/p>\n<p><strong>VS Code Entegrasyonu:<\/strong><br \/>\nVS Code, <code>ts-node<\/code> ile TypeScript betiklerinde hata ay\u0131klama i\u00e7in m\u00fckemmel bir deneyim sunar. Projenizin <code>.vscode\/launch.json<\/code> dosyas\u0131na bir yap\u0131land\u0131rma eklemeniz yeterlidir.<\/p>\n<pre><code class=\"language-json\">\/\/ .vscode\/launch.json\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"name\": \"Launch ts-node\",\n      \"runtimeArgs\": [\n        \"-r\",\n        \"ts-node\/register\" \/\/ ts-node'u require kancas\u0131 olarak kaydeder\n      ],\n      \"args\": [\n        \"${workspaceFolder}\/src\/index.ts\" \/\/ \u00c7al\u0131\u015ft\u0131r\u0131lacak TypeScript beti\u011fi\n      ],\n      \"cwd\": \"${workspaceFolder}\",\n      \"protocol\": \"inspector\",\n      \"console\": \"integratedTerminal\",\n      \"internalConsoleOptions\": \"neverOpen\"\n    },\n    {\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"name\": \"Launch ts-node (npx)\",\n      \"runtimeExecutable\": \"npx\", \/\/ npx kullanarak ts-node'u \u00e7al\u0131\u015ft\u0131r\n      \"runtimeArgs\": [\n        \"ts-node\"\n      ],\n      \"args\": [\n        \"${workspaceFolder}\/src\/index.ts\"\n      ],\n      \"cwd\": \"${workspaceFolder}\",\n      \"protocol\": \"inspector\",\n      \"console\": \"integratedTerminal\",\n      \"internalConsoleOptions\": \"neverOpen\"\n    }\n  ]\n}<\/code><\/pre>\n<p>Bu yap\u0131land\u0131rmalardan herhangi birini kullanarak, VS Code&#8217;da istedi\u011finiz TypeScript sat\u0131r\u0131na kesme noktalar\u0131 (breakpoints) koyabilir ve uygulaman\u0131z\u0131 do\u011frudan IDE&#8217;den \u00e7al\u0131\u015ft\u0131rarak ad\u0131m ad\u0131m hata ay\u0131klama yapabilirsiniz. <code>ts-node<\/code> ve Node.js&#8217;in kaynak harita deste\u011fi sayesinde, hata ay\u0131klay\u0131c\u0131 size orijinal TypeScript kodunuzu g\u00f6sterecektir.<\/p>\n<h3>S\u0131n\u0131rlamalar ve Alternatifler<\/h3>\n<p><code>ts-node<\/code> geli\u015ftirme s\u00fcrecini h\u0131zland\u0131rsa da, baz\u0131 s\u0131n\u0131rlamalar\u0131 ve alternatifleri g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir.<\/p>\n<h4>S\u0131n\u0131rlamalar<\/h4>\n<p>1.  <strong>Performans:<\/strong> <code>ts-node<\/code> kodu an\u0131nda derledi\u011fi i\u00e7in, bu i\u015flem bir miktar ek y\u00fck getirir. B\u00fcy\u00fck projelerde veya s\u0131k s\u0131k \u00e7al\u0131\u015ft\u0131r\u0131lan uzun s\u00fcreli betiklerde, bu derleme s\u00fcresi fark edilebilir hale gelebilir. \u00dcretim ortam\u0131nda performans kritik oldu\u011fundan, <code>ts-node<\/code> genellikle burada kullan\u0131lmaz.<br \/>\n2.  <strong>Tip Kontrol\u00fc Y\u00fck\u00fc:<\/strong> Varsay\u0131lan olarak, <code>ts-node<\/code> kodu derlerken tip kontrol\u00fc de yapar. Bu, tip g\u00fcvenli\u011fi i\u00e7in harika olsa da, derleme s\u00fcresini uzatabilir. <code>--transpile-only<\/code> bayra\u011f\u0131 bu y\u00fck\u00fc azaltabilir, ancak tip kontrol\u00fcn\u00fc atlad\u0131\u011f\u0131 i\u00e7in olas\u0131 tip hatalar\u0131n\u0131 \u00e7al\u0131\u015fma zaman\u0131nda ortaya \u00e7\u0131karabilir.<br \/>\n3.  <strong>Baz\u0131 \u00d6zel Durumlar:<\/strong> \u00c7ok karma\u015f\u0131k TypeScript yap\u0131land\u0131rmalar\u0131, \u00f6zel derleyici eklentileri veya deneysel TypeScript \u00f6zellikleri ile <code>ts-node<\/code>&#8216;un uyumlulu\u011fu bazen sorunlu olabilir.<\/p>\n<h4>Alternatifler<\/h4>\n<p>1.  <strong><code>tsc && node<\/code> (Geleneksel Yakla\u015f\u0131m):<\/strong><br \/>\n    *   <strong>Avantajlar\u0131:<\/strong> \u00dcretim i\u00e7in en g\u00fcvenli ve performansl\u0131 y\u00f6ntemdir. Kodu \u00f6nceden derler ve sadece saf JavaScript \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n    *   <strong>Dezavantajlar\u0131:<\/strong> Geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc yava\u015flat\u0131r, \u00e7\u00fcnk\u00fc her de\u011fi\u015fiklikte manuel derleme gerektirir.<br \/>\n    *   <strong>Kullan\u0131m:<\/strong> <code>tsc && node dist\/index.js<\/code><\/p>\n<p>2.  <strong><code>babel-node<\/code>:<\/strong><br \/>\n    *   <strong>Avantajlar\u0131:<\/strong> Babel ile TypeScript kodunu derleyip \u00e7al\u0131\u015ft\u0131rma yetene\u011fi sunar. JavaScript&#8217;in gelecekteki \u00f6zelliklerini ve di\u011fer dil uzant\u0131lar\u0131n\u0131 destekleme esnekli\u011fi sa\u011flar.<br \/>\n    *   <strong>Dezavantajlar\u0131:<\/strong> TypeScript&#8217;in kendi derleyicisi gibi tam tip kontrol\u00fc sa\u011flamaz. Sadece d\u00f6n\u00fc\u015ft\u00fcrme (transpilation) yapar.<br \/>\n    *   <strong>Kullan\u0131m:<\/strong> <code>babel-node src\/index.ts<\/code> (Babel yap\u0131land\u0131rmas\u0131 gerektirir)<\/p>\n<p>3.  <strong><code>esbuild-register<\/code> \/ <code>swc-node<\/code>:<\/strong><br \/>\n    *   <strong>Avantajlar\u0131:<\/strong> Rust dilinde yaz\u0131lm\u0131\u015f <code>esbuild<\/code> veya <code>SWC<\/code> gibi ultra h\u0131zl\u0131 derleyicileri kullanarak TypeScript&#8217;i JavaScript&#8217;e d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. <code>ts-node<\/code>&#8216;dan \u00e7ok daha h\u0131zl\u0131d\u0131rlar ve geli\u015ftirme s\u00fcresini daha da k\u0131saltabilirler, \u00f6zellikle b\u00fcy\u00fck kod tabanlar\u0131nda.<br \/>\n    *   <strong>Dezavantajlar\u0131:<\/strong> <code>ts-node<\/code> kadar olgun olmayabilirler veya TypeScript&#8217;in t\u00fcm \u00f6zel derleyici se\u00e7eneklerini tam olarak desteklemeyebilirler. Tip kontrol\u00fcn\u00fc genellikle atlayarak sadece d\u00f6n\u00fc\u015ft\u00fcrme yaparlar.<br \/>\n    *   <strong>Kullan\u0131m:<\/strong><\/p>\n<pre><code class=\"language-bash\"># esbuild-register i\u00e7in\n        node -r esbuild-register src\/index.ts\n        # swc-node i\u00e7in\n        node -r @swc-node\/register src\/index.ts<\/code><\/pre>\n<p>    Bu alternatifler, \u00f6zellikle performans\u0131n kritik oldu\u011fu veya <code>ts-node<\/code>&#8216;un yeterince h\u0131zl\u0131 gelmedi\u011fi durumlarda de\u011ferlendirilmelidir.<\/p>\n<h3>En \u0130yi Uygulamalar (Best Practices)<\/h3>\n<p><code>ts-node<\/code>&#8216;dan en iyi \u015fekilde yararlanmak i\u00e7in baz\u0131 en iyi uygulamalar\u0131 takip etmek faydal\u0131d\u0131r:<\/p>\n<p>*   <strong>Geli\u015ftirme Ortam\u0131nda Kullan\u0131n:<\/strong> <code>ts-node<\/code>&#8216;u geli\u015ftirme s\u00fcrecinizi h\u0131zland\u0131rmak i\u00e7in kullan\u0131n. \u00dcretim ortam\u0131nda her zaman <code>tsc<\/code> ile derlenmi\u015f JavaScript dosyalar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n. Bu, hem performans\u0131 art\u0131r\u0131r hem de potansiyel derleme zaman\u0131 hatalar\u0131n\u0131 \u00fcretimden \u00f6nce yakalaman\u0131z\u0131 sa\u011flar.<br \/>\n*   <strong><code>package.json<\/code> Scriptleri ile Entegre Edin:<\/strong> Projenizin t\u00fcm geli\u015ftirme betiklerini <code>package.json<\/code> i\u00e7indeki <code>scripts<\/code> b\u00f6l\u00fcm\u00fcne ekleyin. Bu, ekip \u00fcyeleri aras\u0131nda tutarl\u0131l\u0131k sa\u011flar ve betiklerin kolayca \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 m\u00fcmk\u00fcn k\u0131lar.<br \/>\n*   <strong>Yerel Kurulumu Tercih Edin:<\/strong> <code>ts-node<\/code> ve TypeScript&#8217;i projenize yerel olarak kurun (<code>npm install -D ts-node typescript<\/code>). Bu, ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler ve projenizin farkl\u0131 Node.js\/TypeScript versiyonlar\u0131yla daha esnek olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong><code>tsconfig.json<\/code> Dosyas\u0131n\u0131 Do\u011fru Yap\u0131land\u0131r\u0131n:<\/strong> <code>ts-node<\/code>&#8216;un projenizin tip kontrol\u00fc ve mod\u00fcl \u00e7\u00f6z\u00fcmleme ayarlar\u0131n\u0131 do\u011fru bir \u015fekilde uygulayabilmesi i\u00e7in <code>tsconfig.json<\/code> dosyan\u0131z\u0131 dikkatlice yap\u0131land\u0131r\u0131n. \u00d6zellikle <code>baseUrl<\/code> ve <code>paths<\/code> ayarlar\u0131n\u0131 kullan\u0131yorsan\u0131z, <code>tsconfig-paths<\/code> entegrasyonunu g\u00f6z \u00f6n\u00fcnde bulundurun.<br \/>\n*   <strong>Performans Sorunlar\u0131 \u0130\u00e7in <code>--transpile-only<\/code> veya Alternatifleri De\u011ferlendirin:<\/strong> E\u011fer <code>ts-node<\/code>&#8216;un ba\u015flang\u0131\u00e7 s\u00fcresi projenizde bir darbo\u011faz haline gelirse, <code>--transpile-only<\/code> bayra\u011f\u0131n\u0131 kullanarak tip kontrol\u00fcn\u00fc atlayabilirsiniz. Daha ekstrem durumlarda, <code>esbuild-register<\/code> veya <code>swc-node<\/code> gibi daha h\u0131zl\u0131 alternatifleri de\u011ferlendirin. Ancak bu durumda tip kontrol\u00fcn\u00fc ayr\u0131 bir s\u00fcre\u00e7te (<code>tsc --noEmit<\/code>) \u00e7al\u0131\u015ft\u0131rmay\u0131 unutmay\u0131n.<br \/>\n*   <strong>Hata Ay\u0131klama \u0130\u00e7in VS Code Entegrasyonunu Kullan\u0131n:<\/strong> VS Code&#8217;un <code>launch.json<\/code> yap\u0131land\u0131rmas\u0131n\u0131 kullanarak <code>ts-node<\/code> ile TypeScript kodunuzda do\u011frudan ve etkili bir \u015fekilde hata ay\u0131klama yap\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p><code>ts-node<\/code>, TypeScript geli\u015ftiricilerinin hayat\u0131n\u0131 kolayla\u015ft\u0131ran, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131ran ve genel geli\u015ftirici deneyimini iyile\u015ftiren vazge\u00e7ilmez bir ara\u00e7t\u0131r. TypeScript kodunu an\u0131nda JavaScript&#8217;e d\u00f6n\u00fc\u015ft\u00fcrerek, <code>tsc && node<\/code> gibi geleneksel y\u00f6ntemlerin getirdi\u011fi ek ad\u0131mlar\u0131 ortadan kald\u0131r\u0131r. Bu sayede, geli\u015ftiriciler daha \u00e7ok kod yazmaya ve daha az derleme s\u00fcrecini y\u00f6netmeye odaklanabilirler.<\/p>\n<p>Kurulumu basit, kullan\u0131m\u0131 sezgisel ve Node.js ekosistemiyle derinlemesine entegre olan <code>ts-node<\/code>, tip g\u00fcvenli\u011finden \u00f6d\u00fcn vermeden h\u0131zl\u0131 prototipleme, betik \u00e7al\u0131\u015ft\u0131rma ve hata ay\u0131klama imkanlar\u0131 sunar. Geli\u015fmi\u015f yap\u0131land\u0131rma se\u00e7enekleri sayesinde, projenizin \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re \u00f6zelle\u015ftirilebilir ve <code>tsconfig.json<\/code> dosyan\u0131zla tam uyumlu \u00e7al\u0131\u015f\u0131r.<\/p>\n<p>Unutulmamal\u0131d\u0131r ki, <code>ts-node<\/code>&#8216;un ana kullan\u0131m alan\u0131 geli\u015ftirme ortam\u0131d\u0131r. \u00dcretim ortamlar\u0131nda performans ve kararl\u0131l\u0131k i\u00e7in her zaman derlenmi\u015f JavaScript dosyalar\u0131n\u0131 kullanmak en iyi yakla\u015f\u0131md\u0131r. Ancak geli\u015ftirme s\u00fcrecindeki verimlilik art\u0131\u015f\u0131 g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, <code>ts-node<\/code> modern TypeScript projelerinin olmazsa olmaz ara\u00e7lar\u0131ndan biridir. Bu k\u0131lavuz, <code>ts-node<\/code>&#8216;u projenize entegre etmeniz ve TypeScript betiklerinizi sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131rman\u0131z i\u00e7in gerekli t\u00fcm bilgileri sa\u011flam\u0131\u015ft\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu TypeScript, modern web geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015f, JavaScript&#8217;in s\u00fcper k\u00fcmesi olarak bilinen g\u00fc\u00e7l\u00fc bir programlama dilidir.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[136],"tags":[],"class_list":{"0":"post-41441","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-node-js","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu\" \/>\n<meta property=\"og:description\" content=\"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu TypeScript, modern web geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015f, JavaScript&#039;in s\u00fcper k\u00fcmesi olarak bilinen g\u00fc\u00e7l\u00fc bir programlama dilidir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-26T14:00:56+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu\",\"datePublished\":\"2026-04-26T14:00:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\"},\"wordCount\":2967,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Node.js\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\",\"name\":\"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-04-26T14:00:56+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/","og_locale":"tr_TR","og_type":"article","og_title":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu","og_description":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu TypeScript, modern web geli\u015ftirmenin vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015f, JavaScript'in s\u00fcper k\u00fcmesi olarak bilinen g\u00fc\u00e7l\u00fc bir programlama dilidir.","og_url":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-04-26T14:00:56+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu","datePublished":"2026-04-26T14:00:56+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/"},"wordCount":2967,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Node.js"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/","url":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/","name":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-04-26T14:00:56+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/typescript-betiklerini-ts-node-ile-calistirma-kilavuzu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"TypeScript Betiklerini ts-node ile \u00c7al\u0131\u015ft\u0131rma K\u0131lavuzu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41441","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=41441"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41441\/revisions"}],"predecessor-version":[{"id":41442,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41441\/revisions\/41442"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}