Skip to content

从JavaScript到TypeScript ​

TypeScript 和 JavaScript 是密切相关的编程语言。TypeScript 是 JavaScript 的扩展,为 JavaScript 代码添加了静态类型检查和其他一些高级特性。它与 JavaScript 在语法上具有高度的兼容性,可以无缝地与现有的 JavaScript 代码集成。TypeScript 通过编译过程将 TypeScript 代码转换为 JavaScript 代码,以便在不同的 JavaScript 运行环境中执行。
具体来说,TypeScript 具有以下与 JavaScript 关系相关的特点:

  1. 超集关系:TypeScript 是 JavaScript 的超集,这意味着所有的有效 JavaScript 代码在 TypeScript 中也是有效的。这使得现有的 JavaScript 代码可以无缝地迁移到 TypeScript 环境中,无需做任何修改。
  2. 静态类型检查:JavaScript 是一种动态类型语言,类型由运行时环境进行推断。而 TypeScript 引入了静态类型检查,允许开发者在编译时发现潜在的类型错误。通过类型注解的使用,TypeScript 在编码阶段可以提早捕获类型错误,提高了代码的可靠性和可维护性。
  3. 编译过程:TypeScript 代码需要通过 TypeScript 编译器进行转换,最终生成符合指定 JavaScript 版本的代码。这意味着在运行 TypeScript 代码之前,需要将其编译为 JavaScript 代码。因此,TypeScript 在某种程度上依赖于 JavaScript 来执行。

TypeScript常用的打包工具 ​

一般来说,Webpack使用最多,Gulp也能支持但需要使用Browserify,Babelify和Uglify进行集成。现在,你还可以使用Vite。有关于这些打包工具如何编译TypeScript,可以参考以下链接:

  1. Webpack:https://webpack.js.org/guides/typescript/
  2. Gulp:https://gulpjs.com/en/getting-started/quick-start/
  3. Vite:https://vitejs.dev/guide/

TypeScript与JS是否可以混用 ​

可以,TypeScript 是 JavaScript 的超集,这意味着所有的有效 JavaScript 代码在 TypeScript 中也是有效的。这意味着现有的 JavaScript 代码可以无缝地迁移到 TypeScript 环境中,无需做任何修改。
为什么不推荐混用:

  1. 混用会增加代码的复杂度,因为 TypeScript 的类型检查会带来额外的运行时开销。
  2. 混用会增加代码的维护成本,因为 TypeScript 的类型检查会带来额外的开发成本。
  3. 混用会增加代码的阅读成本,因为 TypeScript 的类型检查会带来额外的阅读成本。

转换到TypeScript文件 ​

到目前为止,你已经做好了使用TypeScript文件的准备。 第一步,将.js文件重命名为.ts文件。 如果你使用了JSX,则重命名为.tsx文件。
第一步达成? 太棒了! 你已经成功地将一个文件从JavaScript转换成了TypeScript!
当然了,你可能感觉哪里不对劲儿。 如果你在支持TypeScript的编辑器(或运行tsc --pretty)里打开了那个文件,你可能会看到有些行上有红色的波浪线。 你可以把它们当做在Microsoft Word里看到的红色波浪线一样。 但是TypeScript仍然会编译你的代码,就好比Word还是允许你打印你的文档一样。
如果对你来说这种行为太随便了,你可以让它变得严格些。 如果,你不想在发生错误的时候,TypeScript还会被编译成JavaScript,你可以使用noEmitOnError选项。 从某种意义上来讲,TypeScript具有一个调整它的严格性的刻度盘,你可以将指针拔动到你想要的位置。
如果你计划使用可用的高度严格的设置,最好现在就启用它们(查看启用严格检查)。 比如,如果你不想让TypeScript将没有明确指定的类型默默地推断为any类型,可以在修改文件之前启用noImplicitAny。 你可能会觉得这有些过度严格,但是长期收益很快就能显现出来。

TypeScript打包的兼容性测试准备 ​

TypeScript是否支持直接在浏览器运行? 浏览器不支持TypeScript,因为TypeScript是编译型语言,需要编译后才能运行。所以浏览器并不原生支持TypeScript。

Webpack配置演示 ​

如果你使用React项目模板创建,或者Vue3.0创建,那么已经支持TypeScript了。绝大多数情况下,不用单独配置,除非你的项目特殊,需要单独使用Webpack对TypeScript进行编译,如转换成让Web SDK供开发者调用。那么下面我们来整理最简单的Webpack配置。注意,下面的依赖确保都被安装。
TypeScript:TypeScript是JavaScript的一个超集,添加了静态类型、类、接口等特性。你需要安装TypeScript本身以便编写和编译TypeScript代码。

bash
npm install --save-dev typescript

ts-loader 或 awesome-typescript-loader:这两个都是Webpack的加载器,用于将TypeScript代码转换为JavaScript代码。ts-loader是一个比较简单的加载器,而awesome-typescript-loader可能提供了一些额外的特性,但相应地也可能更复杂一些。你可以根据你的需求选择其中一个。

bash
npm install --save-dev ts-loader

@types/webpack-env:这个包为Webpack的全局变量提供了TypeScript的类型定义。这有助于在TypeScript代码中正确地引用Webpack的全局变量。

bash
npm install --save-dev @types/webpack-env

Webpack 本身:虽然你可能已经安装了Webpack,但请确保你的版本与ts-loader或awesome-typescript-loader兼容。无论是使用webpack4,还是5,都可以编译.ts文件。
Webpack CLI:如果你还没有安装Webpack CLI,也需要安装它,因为Webpack 4及以上版本需要这个CLI来运行Webpack。

bash
npm install --save-dev webpack
npm install --save-dev webpack-cli

一旦你安装了这些依赖,你需要在Webpack的配置文件(通常是webpack.config.js)中设置TypeScript加载器。例如,对于ts-loader,你的配置可能看起来像这样:

js
module.exports = {  
  // ...  
  module: {  
    rules: [  
      // ...  
      {  
        test: /\.tsx?$/,  
        use: 'ts-loader',  
        exclude: /node_modules/,  
      },  
    ],  
  },  
  resolve: {  
    extensions: [ '.tsx', '.ts', '.js' ],  
  },  
};

仅用于培训和测试,通过使用本站代码内容随之而来的风险与本站无关。版权所有,未经授权请勿转载,保留一切权利。
ICP备案号:滇ICP备15009214号-13   公安网备:滇公网安备 53312302000061号