請注意: 此頁為 Parcel 1 的說明,Parcel 2 版本的說明頁面尚未完成。

TypeScript

支援的副檔名tstsx

TypeScript 是個強型別語法的 JavaScript 超集合,其可支援 ES2015+ 的功能並可編譯成一般的 JavaScript。Parcel 已內建 TypeScript 的轉換,完全無需設定。

Parcel 不會執行 type check,你可以使用 tsc --noEmit 讓 TypeScript 檢查你的檔案。

<!-- index.html -->
<html>
<body>
  <script src="./index.ts"></script>
</body>
</html>
// index.ts
import message from './message'
console.log(message)
// message.ts
export default 'Hello, world'

當你使用 React 時

若要使用 TypeScript + React + JSX,你需要:

  1. 使用 .tsx 副檔名
  2. 正確地引用 React
  3. 在 tsconfig 中使用特殊選項 "jsx": "react"

完整範例:

<!-- index.html -->
<html>
<body>
  <div id="root"></div>
  <script src="./index.tsx"></script>
</body>
</html>
// index.tsx
import React from 'react'
import ReactDOM from 'react-dom'

console.log('Hello from tsx!')

ReactDOM.render(
    <p>Hello</p>,
    document.getElementById('root'),
)
// .tsconfig
{
  "compilerOptions": {
    "jsx": "react"
  }
}

詳情請見此討論串:https://github.com/parcel-bundler/parcel/issues/1199

baseURL 和 paths

Parcel 不會使用 tsconfig.json 中的 baseUrlpaths 指令,你可以用 Parcel 的 ~ 模型載入方式取而代之:

// tsconfig.json
// 假設你的 ts 原始碼位於 ./src/
{
  "compilerOptions": {
    "baseUrl": "./src",
    "paths": {
      "~*": ["./*"]
    },
  },
  "include": ["src/**/*"]
}

完整範例請見此 gist

協助我們讓本文件更加完善

若有什麼內容遺漏了或是敘述不清楚的地方,請在本站的 repository 中開啟一個 issue 或者編輯此頁面