2022你不知道的TypeScript

简介: 2022你不知道的TypeScript

概述


近几年前端对 TypeScript 的热度直增不减,Typescript 也成了前端必备的技能。TypeScript 是 JS 类型的超集,并支持了泛型、类型、命名空间、枚举等特性,弥补了 JS 在大型应用开发中的不足。

在单独学习 TypeScript 时,你会感觉很多概念还是比较好理解的,但是和一些框架结合使用的话坑还是比较多的,例如使用 React、Vue 这些框架的时候与 TypeScript 的结合会成为一大障碍,需要去查看框架提供的.d.ts 的声明文件中一些复杂类型的定义、组件的书写方式等都要做出不小的调整。在阅读本文前,建议对 TypeScript和Vue有一定了解。


构建



  • 通过官网安装Vue CLI脚手架
npm install --global @vue/cli
复制代码
  • 用最新的Vue CLI工具允许开发者 使用 TypeScript 集成环境 创建新项目。
vue create my-app
  • 使用箭头键选择 Manually select features,只需确保选择了 TypeScriptBabel 选项,其它根据自己喜好来选择安装。
  • 设置完成 vue cli 就会开始安装依赖并设置项目。


目录解析



|-- my-app    
|-- .browserslistrc     # browserslistrc 配置文件 (用于支持 Autoprefixer)    
|-- .eslintrc.js        # eslint 配置    
|-- .gitignore    
|-- babel.config.js     # babel-loader 配置    
|-- package-lock.json    
|-- package.json        # package.json 依赖    
|-- postcss.config.js   # postcss 配置    
|-- README.md    
|-- tsconfig.json       # typescript 配置    
|-- vue.config.js       # vue-cli 配置    
|-- public              # 静态资源 (会被直接复制)    
|   |-- favicon.ico     # favicon图标    
|   |-- index.html      # html模板    
|-- src    
|   |-- App.vue         # 入口页面    
|   |-- main.ts         # 入口文件 加载组件 初始化等    
|   |-- shims-tsx.d.ts    
|   |-- shims-vue.d.ts    
|   |-- assets          # 主题 字体等静态资源 (由 webpack 处理加载)    
|   |-- components      # 全局组件    
|   |-- router          # 路由    
|   |-- store           # 全局 vuex store    
|   |-- styles          # 全局样式    
|   |-- views           # 所有页面    
|-- tests               # 测试

其实项目目录结构没太多变化,主要区别主要是之前 js 后缀的现在改为了 ts 后缀,还多了tsconfig.jsonshims-tsx.d.tsshims-vue.d.ts这几个文件。

  • tsconfig.json: typescript 配置文件,主要用于指定待编译的文件和定义编译选项
  • shims-tsx.d.ts: 允许.tsx 结尾的文件,在 Vue 项目中编写 jsx 代码
  • shims-vue.d.ts: 主要用于 TypeScript 识别.vue 文件,TS 默认并不支持导入 vue 文件


使用



开始前我们先来了解一下在 vue 中使用 typescript 常用的几个库

  • vue-class-component: vue-class-component是一个 Class Decorator,也就是类的装饰器
  • vue-property-decorator: vue-property-decorator是基于 vue 组织里 vue-class-component 所做的拓展
import { Vue, Component, Inject, Provide, Prop, Model, Watch, Emit, Mixins } from 'vue-property-decorator'
  • vuex-module-decorators: 用 typescript 写 vuex 很好用的一个库
import { Module, VuexModule, Mutation, Action, MutationAction, getModule } from 'vuex-module-decorators'


组件声明


  • 组件申明
import { Component, Prop, Vue, Watch } from 'vue-property-decorator';
@Component
export default class Home extends Vue {
  // data对象
  private name: string;
  private msg: string;
  // prop申明
  @Prop({ default: false }) private isCollapse!: boolean;
  @Prop({ default: true }) private isFirstLevel!: boolean;
  @Prop({ default: "" }) private basePath!: string;
  // methods申明
  public clickFunc(): void {
    console.log(this.name)
    console.log(this.msg)
  }
  // Watch 监听属性
  @Watch("$route", { immediate: true })
  private onRouteChange(route: Route) {
    const query = route.query as Dictionary;
    if (query) {
      this.redirect = query.redirect;
      this.otherQuery = this.getOtherQuery(query); 
    }
  }
}

两种在语法上叫赋值断言

  • !: 表示一定存在,
  • ?: 表示可能不存在。
  • @Prop(options: (PropOptions | Constructor[] | Constructor) = {})
  • PropOptions,可以使用以下选项:type,default,required,validator
  • Constructor[],指定 prop 的可选类型
  • Constructor,例如 String,Number,Boolean 等,指定 prop 的类型



目录
相关文章
|
10月前
|
JavaScript 前端开发 安全
TypeScript五
TypeScript是面向对象的JavaScript超集,支持类、接口等OOP特性。类通过`class`定义,包括字段、构造函数和方法。例如,`Car`类有`engine`字段、构造函数和`disp`方法。类间可实现继承,如`Circle`继承`Shape`。TypeScript不支持多重继承,但允许多重继承链。`static`关键字定义静态成员,`instanceof`检查对象类型,访问控制修饰符(public, protected, private)管理访问权限。类能实现接口,如`AgriLoan`实现`ILoan`。 TypeScript对象是类型实例,
|
5月前
|
JavaScript 安全
TypeScript使用真的很麻烦吗?
TypeScript使用真的很麻烦吗?
51 3
|
10月前
|
存储 JavaScript
TypeScript三
在 TypeScript 中,数组可以通过类型定义,如 `number[]` 或 `string[]`。示例展示了数字和字符串数组的声明与访问。数组解构允许将数组元素赋值给多个变量。通过 `for...in` 循环可遍历数组。多维数组如 `number[][]` 存储嵌套数组。数组方法包括:`concat()` 连接数组,`every()` 检查所有元素是否满足条件,`filter()` 过滤符合条件的元素,`forEach()` 对每个元素执行回调,`indexOf()` 查找元素位置,`join()` 将数组转为字符串,`map()` 应用函数于每个元素并返回新数组
|
10月前
|
JavaScript 前端开发 开发者
TypeScript一
JavaScript开发迅速但维护成本高,适合小型项目,因其动态类型导致编辑器提示不全。TypeScript是JS超集,增加了类型系统,提高开发效率和代码质量。安装TypeScript需先安装Node.js,然后通过npm安装tsc。案例演示创建`.ts`文件,转换成`.js`并运行。TypeScript支持多种数据类型,如any、number、string等,并有严格变量声明和函数定义规则,包括函数重载和匿名函数。
|
10月前
|
存储 JavaScript 索引
TypeScript四
## 联合类型 联合类型使用`|`分隔,表示变量可为多种类型: ```c var val: string | number; val = 12; // OK val = "Runoob"; // OK `
|
10月前
|
JavaScript 前端开发
TypeScript二
JavaScript Number对象包含多种方法,如`toExponential()`将数值转化为指数形式,`toFixed()`保留指定位数的小数,`toLocaleString()`按本地格式显示数字,`toPrecision()`格式化数字到指定长度,`toString()`以指定基数表示数字,而`valueOf()`返回原始数值。此外,示例中还展示了Date对象的格式化方法。对于String对象,有`constructor`返回创建对象的函数,`length`获取字符串长度,`prototype`用于扩展对象,以及一系列如`charAt()`、`indexOf()
|
10月前
|
开发框架 JavaScript 前端开发
什么是TypeScript
什么是TypeScript
53 0
|
10月前
|
JavaScript 前端开发 Java
TypeScript
TypeScript是JavaScript的一个超集,简称ts,ts是能够完全兼容js的ts是一门静态类型的语言,js是动态类型的语言
72 0
|
JavaScript
【TypeScript理解】
【TypeScript理解】
|
JSON JavaScript 前端开发
Typescript知识总结(1)
Typescript知识总结(1)
Typescript知识总结(1)

热门文章

最新文章