首页 > 建站教程 > 前端框架 >  webpack5学习笔记:对typescript的支持正文

webpack5学习笔记:对typescript的支持

# typescript compiler 的使用


## 安装typescript编译器tsc(typescript compiler)

1. 全局安装的TypeScript,直接运行 tsc

`npm install typescript -g`

2. 局部安装,运行typescript,需要用npx

`npm install typescript -D`


# ts-loader

1. 安装 ts-loader

`npm i ts-loader -D`

2. webpack 配置

rules: [

    {

        test: /\.ts$/,

        use: 'ts-loader'

    }

]

3. 配置 tsconfig.json,没有这个文件编译时会报错:The 'files' list in config file 'tsconfig.json' is empty.

运行 `tsc --init` // 前提是全局安装了 typeScript

会在根目录创建 tsconfig.json


注:ts-loader依赖于tsc,用tsc来将typescript转成javascript,但是它不会对tsc中的新特性,如 promise、let、const进行ES5的转换。



# babel转typescript

## babel转typescript,不需要 ts-loader,并且对 ts-loader中的新特性也能转成低版本js


## webpack配置

1. 安装presets预设

```

npm i @babel/preset-typeScript -D

```


2. webpack中配置:

module: {

    rules: [

        {

            test: /\.ts$/,

            use: 'babel-loader'

        }

    ]

}


3. babel.config.js 中配置

module.exports = {

    presets: [

        ['@babel/preset-env', {

            useBuiltIns: 'usage',

            corejs: 3

        }],

        ['@babel/preset-typescript']

    ]

}



# ts-loader 和 babel-loader 选择

1. ts-loader 会对类型进行检测,babel-loader 不会

2. babel-loader 会对 ts 中的promise等更先进的语法 用 polyfill 进行转译,ts-loader 不会

3. 可以在打包之前做个检测,在package.json中配置命令:

```

"script": {

    "type-check": "tsc --noEmit"  // 用tsc检测,但不打包

}

```

或者

```

"script": {

    "type-check": "tsc --noEmit --watch"  // 用tsc检测,并且是实时监测,除非ctrl+c打断

}

```

4. 打包,还用 babel-loader