<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									ทำไมถึงต้องใช้ Typescript ทั้งที่ก็มี JavaScript อยู่แล้ว - บทความทางด้านคอมพิวเตอร์ (Computer-Articles)				            </title>
            <link>https://il.mahidol.ac.th/th/i-learning-clinic/computer-articles/%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%96%e0%b8%b6%e0%b8%87%e0%b8%95%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b9%83%e0%b8%8a%e0%b9%89-typescript-%e0%b8%97%e0%b8%b1%e0%b9%89%e0%b8%87%e0%b8%97%e0%b8%b5/</link>
            <description>Discussion Board</description>
            <language>th</language>
            <lastBuildDate>Mon, 05 Oct 2026 21:50:19 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>ทำไมถึงต้องใช้ Typescript ทั้งที่ก็มี JavaScript อยู่แล้ว</title>
                        <link>https://il.mahidol.ac.th/th/i-learning-clinic/computer-articles/%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%96%e0%b8%b6%e0%b8%87%e0%b8%95%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b9%83%e0%b8%8a%e0%b9%89-typescript-%e0%b8%97%e0%b8%b1%e0%b9%89%e0%b8%87%e0%b8%97%e0%b8%b5/#post-581</link>
                        <pubDate>Fri, 15 Jul 2022 01:59:16 +0000</pubDate>
                        <description><![CDATA[หากคุณเข้าสู่แวดวง Programming หรือ Software Development เชื่อว่าคุณคงรู้เกี่ยวกับ JavaScript อย่างแน่นอน แต่หากถามว่า คุณรู้จัก TypeScript หรือไม่ คงมีอีกหลายคนที่ยังไม่รู้จัก TypeScript วั...]]></description>
                        <content:encoded><![CDATA[<p><span>หากคุณเข้าสู่แวดวง Programming หรือ Software Development เชื่อว่าคุณคงรู้เกี่ยวกับ JavaScript อย่างแน่นอน แต่หากถามว่า คุณรู้จัก TypeScript หรือไม่ คงมีอีกหลายคนที่ยังไม่รู้จัก TypeScript วันนี้เรามาดูข้อแตกต่างระหว่าง TypeScript กับ JavaScript Programming กันว่ามีอะไรบ้าง</span></p>
<p><span><strong>JavaScript คืออะไร</strong></span></p>
<p><span>โดยพื้นฐานแล้ว JavaScript นั้นเป็นภาษา Script ที่ก่อนหน้านี้เป็น Client-Side Programming เท่านั้น แต่ตอนนี้ (หลังจากที่มี Node.js) มันสามารถใช้สำหรับ Server-Side Programming ได้ด้วย ทำงานได้ทั้งบน Web Browser และ Web Server ซึ่ง JavaScript จะช่วยให้ Code ของเราสามารถโต้ตอบ (Interact) กับ Browser และยังสามารถเปลี่ยนหรือ Update ทั้ง HTML และ CSS แม้ว่าคุณจะสามารถใช้ JavaScript กับ REST APIs, XML รวมทั้งอื่น ๆ แต่มันก็ไม่ได้ถูกออกแบบมาเพื่อพัฒนา Applications, Applets หรือระบบขนาดใหญ่ที่มีความซับซ้อน แต่ในปัจจุบันมันกำลังจะสามารถทำแบบนั้นได้<br />เมื่อ JavaScript เริ่มเติบโตมากขึ้น Code ของมันก็เริ่มหนักและซับซ้อนมากขึ้นจนไม่สามารถตอบสนองต่อ Requirement ของ Object-Oriented Programming ได้ มันจึงเป็นต้นเหตุที่ไป “จำกัด” การเติบโตของ JavaScript ซึ่งเป็นภาษา Server-Side และ Multitasking และด้วยเหตุนี้เอง TypeScript เกิดขึ้นเพื่อเอาชนะปัญหาดังกล่าว</span></p>
<p><span><strong>TypeScript คืออะไร</strong></span></p>
<p><span>Typescript ก็คือภาษา JavaScript ใน Version ที่ได้รับการ Upgrade นั่นเอง มันสามารถทำงานบน Node.js Environment หรือ Web Browser ต่าง ๆ ที่มีการรองรับ ECMAScript 3 ขึ้นไป TypeScript เป็น Statically Compiled Language ที่ได้จัดเตรียมทั้ง Static Typing, Classes และ Interface ไว้ให้แล้ว ช่วยให้คุณสามารถเขียน Code ของ JavaScript ที่เรียบง่ายและ Clean ได้อย่างสะดวกขึ้น ดังนั้น การใช้ TypeScript จะช่วยให้คุณสามารถสร้าง Software ที่ปรับใช้งานได้ง่ายและมีประสิทธิภาพมากยิ่งขึ้น</span></p>
<p><span><strong>ข้อดีของ </strong><strong>TypeScript</strong></span></p>
<ul>
<li><span>TypeScript มี Feature ที่มีประโยชน์อย่าง Code Navigation, Bug Prevention และ Maintainability of Code ไว้ให้แล้ว</span></li>
<li><span>มันรองรับ Static Type Annotation หรือ Static Typing</span></li>
<li><span>นอกจากนี้ยังรองรับ Interfaces, Sub-Interfaces, Classes, Subclasses และ ECMAScript 6 หรือ ES6</span></li>
<li><span>มันมาพร้อมกับความสามารถใน Object-Oriented Programming พร้อมทั้งการ Inheritance ของ Private Members และ Interfaces</span></li>
<li><span>มี IDE ให้ใช้อยู่มากมาย</span></li>
</ul>
<p><span><strong>ข้อดีของ </strong><strong>JavaScript</strong></span></p>
<ul>
<li><span>JavaScript เป็น Open-Source จึงเป็นภาษาที่มีความยืดหยุ่นและมีประสิทธิภาพ ซึ่งได้รับการสนับสนุนโดย Microsoft และ Mozilla</span></li>
<li><span>มันสามารถถูกใช้งานได้ทั้ง Client และ Server Side</span></li>
<li><span>มันรองรับทั้ง Classes, Interfaces และ Modules</span></li>
<li><span>มันถูกออกแบบมาเป็นพิเศษสำหรับ Scripts ขนาดเล็ก ๆ</span></li>
<li><span>มันเป็นภาษา Cross-Platform</span></li>
<li><span>มันมีในส่วนของการ Testing Workflow ที่แข็งแกร่ง และรองรับในเรื่องของ Dependencies อีกด้วย</span></li>
</ul>
<p><span><strong>ข้อแตกต่างระหว่าง </strong><strong>JavaScript กับ TypeScript</strong></span></p>
<ul>
<li><span>JavaScript เป็นภาษาที่สามารถเรียนรู้ได้ง่าย ในขณะที่ TypeScript ต้องอาศัยการเรียนรู้ที่มากกว่าและต้องมีความรู้เกี่ยวกับ Script ก่อน</span></li>
<li><span>TypeScript รองรับ Static Typing ซึ่งทำใให้คุณสามารถตรวจสอบความถูกต้องของ Type ได้ในระหว่างที่ Compile แต่ในขณะที่ JavaScript กลับไม่รองรับสิ่งนี้</span></li>
<li><span>Code ของ TypeScript จำเป็นต้องถูก Compile ก่อน แต่สำหรับ JavaScript ไม่ต้อง Compile ก่อน Run</span></li>
<li><span>JavaScript มี Community ขนาดใหญ่สำหรับ Developer ซึ่ง TypeScript ยังไม่มี</span></li>
<li><span>Airbnb, Codecademy และ Instagram เป็นบริษัทส่วนหนึ่งที่ใช้ JavaScript ในขณะที่ TypeScript ถูกใช้โดย Asana, Clever, Screen Award เป็นต้น</span></li>
</ul>
<p><span>หวังว่าข้อมูลเหล่านี้จะเป็นประโยชน์กับคุณ แต่หากคุณเป็นมือใหม่หรือกำลังจะเริ่มศึกษาภาษาเหล่านี้ ขอแนะนำให้ศึกษา JavaScript ก่อนโดยเริ่มต้นเรียนรู้ที่พื้นฐานก่อน ฝึกฝนในเรื่องของ Code จนเมื่อคุณมั่นใจ แล้วจึงมาเริ่มศึกษา TypeScript ต่อ ประการสำคัญคือ การรู้ทั้ง 2 อย่างนี้มันจะช่วยให้ Resume ของคุณโดดเด่นกว่าผู้สมัครคนอื่นที่มีแค่ทักษะ JavaScript เพียงอย่างเดียว</span></p>
<p><strong>credit: Kanthima Muangsen</strong></p>
<p><span><strong><em>ที่มา</em></strong><strong><em>:  </em></strong><a href="https://www.technotification.com/2019/04/difference-between-javascript-and-typescript.html"><strong><em>https://www.technotification.com/</em></strong></a></span></p>
<p> </p>
<header id="main-title" class="crayons-article__header">
<div class="crayons-article__header__meta">
<h1 class="fs-3xl m:fs-4xl l:fs-5xl fw-bold s:fw-heavy lh-tight mb-2 medium">วิธีการตั้งค่า TypeScript กับ Node.js</h1>
</div>
</header>
<div class="crayons-article__main"><nav class="series-switcher crayons-card crayons-card--secondary">
<div class="series-switcher__list"><a class="crayons-link crayons-link--contentful series-switcher__link series-switcher__link--active " title="Published Mar 11 '21" href="https://dev.to/somprasongd/typescript-node-js-jb7" data-preload-image="https://res.cloudinary.com/practicaldev/image/fetch/s--nWtoz2Ui--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/odfuul76e72d8q6fbry4.jpg"><span class="series-switcher__num">1</span><span class="series-switcher__title">วิธีการตั้งค่า TypeScript กับ Node.js</span></a><a class="crayons-link crayons-link--contentful series-switcher__link  " title="Published Mar 11 '21" href="https://dev.to/somprasongd/javascript-typescript-4ffj" data-preload-image="https://res.cloudinary.com/practicaldev/image/fetch/s--EIHH3JKT--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5pgv10qhb9jqedu7lu34.jpg"><span class="series-switcher__num">2</span><span class="series-switcher__title">จาก JavaScript ไปยัง TypeScript เริ่มยังไง</span></a></div>
</nav>
<div id="article-body" class="crayons-article__body text-styles spec__body" data-article-id="631826">
<p>วิธีการตั้งค่าโปรเจคให้สามารถรัน TypeScript ได้ พร้อมกับวิธีการนำไปใช้กับ Express</p>
<h2><a href="https://dev.to/somprasongd/typescript-node-js-jb7#%E0%B8%AA%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%A1%E0%B8%B5" name="%E0%B8%AA%E0%B8%B4%E0%B9%88%E0%B8%87%E0%B8%97%E0%B8%B5%E0%B9%88%E0%B8%95%E0%B9%89%E0%B8%AD%E0%B8%87%E0%B8%A1%E0%B8%B5"></a>สิ่งที่ต้องมี</h2>
<ul>
<li>Node.js version &gt;= 12</li>
<li>npm หรือ yarn</li>
</ul>
<h2><a href="https://dev.to/somprasongd/typescript-node-js-jb7#%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%80%E0%B8%88%E0%B8%84%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%96%E0%B8%A3%E0%B8%B1%E0%B8%99-typescript-%E0%B9%84%E0%B8%94%E0%B9%89" name="%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%80%E0%B8%88%E0%B8%84%E0%B9%83%E0%B8%AB%E0%B9%89%E0%B8%AA%E0%B8%B2%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%96%E0%B8%A3%E0%B8%B1%E0%B8%99-typescript-%E0%B9%84%E0%B8%94%E0%B9%89"></a>การตั้งค่าโปรเจคให้สามารถรัน TypeScript ได้</h2>
<ul>
<li>เริ่มจากสร้างโปรเจคใหม่ และสร้างไฟล์ package.json</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code><span class="nb">mkdir </span>typescript-node
<span class="nb">cd </span>typescript-node
npm init <span class="nt">-y</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>
<p>ติดตั้ง libraries ใน devDepencies</p>
<ul>
<li><code>typescript</code><span> </span>เป็นตัวหลักที่ช่วยแปลงจาก TypeScript ไปเป็น JavaScript</li>
<li><code>ts-node</code><span> </span>เป็นเหมือน dev server ค่อยช่วยแปลงโค้ดจาก TypeScript ไปเป็น JavaScript ในขั้นตอนพัฒนา</li>
<li><code>nodemon</code><span> </span>ตัวช่วยให้รันโค้ดใหม่อัตโนมัติ เมื่อมีการแก้ไขโค้ด ทำงานร่วมกับ<span> </span><code>ts-node</code></li>
</ul>
</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code>npm i <span class="nt">-D</span> typescript ts-node nodemon
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>สร้างไฟล์ tsconfig.json โดยใช้คำสั่ง</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code>ืnpx tsc <span class="nt">--init</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<p>และแก้ไขค่าตามนี้</p>
<div class="highlight js-code-highlight">
<pre class="highlight diff" contenteditable="false"><code><span class="err">{</span>
  "compilerOptions": {
<span class="gd">-    "target": "es5"
</span><span class="gi">+    "target": "es6" /* กำหนดว่าให้แปลงเป็น js version อะไร */,
</span>    "module": "commonjs" /* กำหนดว่าจะใช้ module แบบไหน */,
<span class="gi">+    "moduleResolution": "node" /* บอกใช้กับ Node.js */,
</span>    "esModuleInterop": true /* อนุญาติให้ complie ES6 module เป็น commonjs*/,
    "strict": true /* เปิดใช้ strict type-checking options*/,
<span class="gi">+    "outDir": "./dist" /* ระบุโฟลเดอร์ output (JavaScript) */,
+    "rootDir": "./src" /* ระบุโฟลเดอร์ sourcecode (TypeScript) */
</span>  }
<span class="err">}</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>
<p>แก้ไข script ไฟล์ package.json</p>
<ul>
<li><code>dev</code><span> </span>สำหรับรันโค้ดในโหมดพัฒนา จะทำการ reload อัตโนมัติเมื่อแก้ไขโค้ด</li>
<li><code>build</code><span> </span>สำหรับแปลงไฟล์เป็น JavaScript สำหรับการนำไปใช้งานจริง</li>
</ul>
</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight json" contenteditable="false"><code><span class="nl">"scripts"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
  </span><span class="nl">"dev"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nodemon"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"build"</span><span class="p">:</span><span class="w"> </span><span class="s2">"tsc --project ./"</span><span class="w">
</span><span class="p">}</span><span class="err">,</span><span class="w">
</span></code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>และสร้างไฟล์ nodemon.json</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight json" contenteditable="false"><code><span class="p">{</span><span class="w">
  </span><span class="nl">"watch"</span><span class="p">:</span><span class="w"> </span><span class="p">,</span><span class="w">
  </span><span class="nl">"ext"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ts"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"ignore"</span><span class="p">:</span><span class="w"> </span><span class="p">,</span><span class="w">
  </span><span class="nl">"exec"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ts-node ./src/index.ts"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<h2><a href="https://dev.to/somprasongd/typescript-node-js-jb7#%E0%B8%97%E0%B8%94%E0%B8%AA%E0%B8%AD%E0%B8%9A%E0%B9%82%E0%B8%84%E0%B9%89%E0%B8%94-typescript" name="%E0%B8%97%E0%B8%94%E0%B8%AA%E0%B8%AD%E0%B8%9A%E0%B9%82%E0%B8%84%E0%B9%89%E0%B8%94-typescript"></a>ทดสอบโค้ด TypeScript</h2>
<ul>
<li>สร้างไฟล์ src/index.ts</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight typescript" contenteditable="false"><code><span class="kd">const</span> <span class="nx">geeting</span> <span class="o">=</span> <span class="p">(</span><span class="nx">name</span><span class="p">:</span> <span class="kr">string</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">`Hello </span><span class="p">${</span><span class="nx">name</span><span class="p">}</span><span class="s2"> from TypeScript.`</span><span class="p">);</span>
<span class="p">};</span>

<span class="nx">geeting</span><span class="p">(</span><span class="dl">'</span><span class="s1">Ball</span><span class="dl">'</span><span class="p">);</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>รัน<span> </span><code>npm run dev</code></li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code><span class="o">&gt;</span> typescript-node@1.0.0 dev D:<span class="se">\w</span>orkspaces<span class="se">\p</span>laygounds<span class="se">\t</span>ypescript-node
<span class="o">&gt;</span> nodemon

<span class="o"> 2.0.7
<span class="o"> to restart at any <span class="nb">time</span>, enter <span class="sb">`</span>rs<span class="sb">`</span>
<span class="o"> watching path<span class="o">(</span>s<span class="o">)</span>: src<span class="se">\*</span><span class="k">*</span><span class="se">\*</span>
<span class="o"> watching extensions: ts
<span class="o"> starting <span class="sb">`</span>ts-node ./src/index.ts<span class="sb">`</span>
Hello Ball from TypeScript.
<span class="o"> clean <span class="nb">exit</span> - waiting <span class="k">for </span>changes before restart
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>ทดลองแก้ไขชื่อ<span> </span><code>nodemon</code><span> </span>ก็จะ restart ให้อัตโนมัติ</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code><span class="o"> restarting due to changes...
<span class="o"> starting <span class="sb">`</span>ts-node ./src/index.ts<span class="sb">`</span>
Hello Stamp from TypeScript.
<span class="o"> clean <span class="nb">exit</span> - waiting <span class="k">for </span>changes before restart
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>ทดสอบ build โดยรันคำสั่ง<span> </span><code>npm run build</code><span> </span>ก็ได้จะได้โฟลเดอร์<span> </span><code>dist</code><span> </span>ออกมา และมีไฟล์ index.js อยู่ข้างใน</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight javascript" contenteditable="false"><code><span class="c1">// dist/index.js</span>
<span class="dl">'</span><span class="s1">use strict</span><span class="dl">'</span><span class="p">;</span>
<span class="kd">const</span> <span class="nx">geeting</span> <span class="o">=</span> <span class="p">(</span><span class="nx">name</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">`Hello </span><span class="p">${</span><span class="nx">name</span><span class="p">}</span><span class="s2"> from TypeScript.`</span><span class="p">);</span>
<span class="p">};</span>
<span class="nx">geeting</span><span class="p">(</span><span class="dl">'</span><span class="s1">Stamp</span><span class="dl">'</span><span class="p">);</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<h2><a href="https://dev.to/somprasongd/typescript-node-js-jb7#%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2-typescript-%E0%B8%81%E0%B8%B1%E0%B8%9A-express" name="%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2-typescript-%E0%B8%81%E0%B8%B1%E0%B8%9A-express"></a>วิธีตั้งค่า TypeScript กับ Express</h2>
<ul>
<li>
<p>ติดตั้ง Express รัน<span> </span><code>npm i express</code></p>
</li>
<li>
<p>สร้าง Express Server ง่ายๆ ที่ไฟล์ src/index.ts</p>
</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight typescript" contenteditable="false"><code><span class="k">import</span> <span class="nx">express</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">express</span><span class="dl">'</span><span class="p">;</span>

<span class="kd">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span>

<span class="kd">const</span> <span class="nx">PORT</span> <span class="o">=</span> <span class="mi">8000</span><span class="p">;</span>

<span class="nx">app</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="dl">'</span><span class="s1">/</span><span class="dl">'</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="dl">'</span><span class="s1">Express + TypeScript Server</span><span class="dl">'</span><span class="p">));</span>

<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="nx">PORT</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">`Server is running at http://localhost:</span><span class="p">${</span><span class="nx">PORT</span><span class="p">}</span><span class="s2">`</span><span class="p">);</span>
<span class="p">});</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<ul>
<li>
<p>ทดสอบรัน npm run dev จะพบว่าไม่สามารถรันได้ เนื่องจาก มันไม่รู้จัก type นั่นเอง</p>
</li>
<li>
<p>แก้ไขโดยการติดตั้ง @types ที่ต้องการเพิ่มเข้าไป</p>
</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code>npm i <span class="nt">-D</span> @types/node @types/express
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<blockquote>
<p>ถ้าใช้ bodyParser ก็ต้องติดตั้ง @types/body-parser เพิ่มด้วย</p>
</blockquote>
<ul>
<li>เมื่อรองรันใหม่อีกครั้งก็จะสามารถรันได้แล้ว</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight shell" contenteditable="false"><code>npm run dev

<span class="o">&gt;</span> typescript-node@1.0.0 dev D:<span class="se">\w</span>orkspaces<span class="se">\p</span>laygounds<span class="se">\t</span>ypescript-node
<span class="o">&gt;</span> nodemon

<span class="o"> 2.0.7
<span class="o"> to restart at any <span class="nb">time</span>, enter <span class="sb">`</span>rs<span class="sb">`</span>
<span class="o"> watching path<span class="o">(</span>s<span class="o">)</span>: src<span class="se">\*</span><span class="k">*</span><span class="se">\*</span>
<span class="o"> watching extensions: ts
<span class="o"> starting <span class="sb">`</span>ts-node ./src/index.ts<span class="sb">`</span>
Server is running at http://localhost:8000
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<h3><a href="https://dev.to/somprasongd/typescript-node-js-jb7#%E0%B8%A2%E0%B8%B1%E0%B8%87%E0%B9%86-%E0%B9%84%E0%B8%A1%E0%B9%88%E0%B8%AB%E0%B8%A1%E0%B8%94" name="%E0%B8%A2%E0%B8%B1%E0%B8%87%E0%B9%86-%E0%B9%84%E0%B8%A1%E0%B9%88%E0%B8%AB%E0%B8%A1%E0%B8%94"></a>ยังๆ... ไม่หมด</h3>
<p>เนื่องจากเราเขียนแบบ TypeScript แต่โค้ดข้างต้นยังไม่ได้ถูกกำหนด type ให้ถูกต้องเลย ดังนั้นเรามากำหนด type ให้ถูกต้องการ ดังนี้</p>
<ul>
<li>app ต้องมี type เป็น Application</li>
<li>req ต้องมี type เป็น Request</li>
<li>res ต้องมี type เป็น Response</li>
</ul>
<div class="highlight js-code-highlight">
<pre class="highlight typescript" contenteditable="false"><code><span class="k">import</span> <span class="nx">express</span><span class="p">,</span> <span class="p">{</span> <span class="nx">Application</span><span class="p">,</span> <span class="nx">Request</span><span class="p">,</span> <span class="nx">Response</span> <span class="p">}</span> <span class="k">from</span> <span class="dl">'</span><span class="s1">express</span><span class="dl">'</span><span class="p">;</span>

<span class="kd">const</span> <span class="nx">app</span><span class="p">:</span> <span class="nx">Application</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span>

<span class="kd">const</span> <span class="nx">PORT</span><span class="p">:</span> <span class="kr">number</span> <span class="o">=</span> <span class="mi">8000</span><span class="p">;</span>

<span class="nx">app</span><span class="p">.</span><span class="kd">get</span><span class="p">(</span><span class="dl">'</span><span class="s1">/</span><span class="dl">'</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">:</span> <span class="nx">Request</span><span class="p">,</span> <span class="nx">res</span><span class="p">:</span> <span class="nx">Response</span><span class="p">)</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="dl">'</span><span class="s1">Express + TypeScript Server</span><span class="dl">'</span><span class="p">);</span>
<span class="p">});</span>

<span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="nx">PORT</span><span class="p">,</span> <span class="p">()</span> <span class="o">=&gt;</span> <span class="p">{</span>
  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s2">`Server is running at http://localhost:</span><span class="p">${</span><span class="nx">PORT</span><span class="p">}</span><span class="s2">`</span><span class="p">);</span>
<span class="p">});</span>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action"> </div>
</div>
</div>
<p>เท่านี้ก็เรียบร้อยแล้ว</p>
<p>credit: <a class="crayons-link fw-bold" href="https://dev.to/somprasongd">Somprasong Damyos</a></p>
</div>
</div>]]></content:encoded>
						                            <category domain="https://il.mahidol.ac.th/th/i-learning-clinic/computer-articles/">บทความทางด้านคอมพิวเตอร์ (Computer-Articles)</category>                        <dc:creator>nopparat.jap</dc:creator>
                        <guid isPermaLink="true">https://il.mahidol.ac.th/th/i-learning-clinic/computer-articles/%e0%b8%97%e0%b8%b3%e0%b9%84%e0%b8%a1%e0%b8%96%e0%b8%b6%e0%b8%87%e0%b8%95%e0%b9%89%e0%b8%ad%e0%b8%87%e0%b9%83%e0%b8%8a%e0%b9%89-typescript-%e0%b8%97%e0%b8%b1%e0%b9%89%e0%b8%87%e0%b8%97%e0%b8%b5/#post-581</guid>
                    </item>
							        </channel>
        </rss>
		