当前位置:   article > 正文

TS核心知识点总结及项目实战案例分析

ts核心

前言

最近工作一直很忙,复盘周期也有所拉长,不过还是会坚持每周复盘。今天笔者将复盘一下typescript在前端项目中的应用,至于为什么要学习typescript,我想大家也不言自明,目前主流框架vue和react以及相关生态的内部构建大部分都采用了typescript,其原因就在于它的静态类型检查极大的提高了代码的可读性和可维护性,而且定位问题非常方便。下面上一份关于typescript的官方定义,方便大家理解:

TypeScript 是由微软开发的自由和开源的编程语言, 是JavaScript 的一个超集,支持 ECMAScript 6 标准。其设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。

本文将通过介绍ts的核心知识点以及实际案例来带大家轻松掌握typescript。

概要

任何语言的学习都要有学习和思考体系,前端也不例外,笔者将按照如下图所示结构来进行讲解:

正文

我们目前项目开发用的最多的就是webpack,对于ts,我们也很方便的可以通过ts-loader对其进行编译配置,为了降低大家学习ts的难度,笔者推荐采用vue-cli3或者umi直接搭建ts项目,这样可以更快的上手ts开发。

核心知识点

1. 基础类型

TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。接下来我们简单介绍一下这几种类型的用法.

  1. // 布尔类型
  2. let isCookie:boolean = true
  3. // 数值类型
  4. let myMoney:number = 12
  5. // 字符串类型
  6. let name:string = '徐小夕'
  7. // 数组类型, 有两种表示方式,第一种可以在元素类型后面接上[],表示由此类型元素组成的一个数组
  8. let arr:number[] = [1,2,2]
  9. // 数组类型, 使用数组泛型
  10. let arr:Array<number> = [1,2,2]
  11. // 元组类型, 允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
  12. let xi: [string, number];
  13. // 初始化xi
  14. xi = ['xu', 10]; // 正确
  15. xi = [11, 'xu']; // 错误
  16. // 枚举类型, 可以为一组数值赋予友好的名字
  17. enum ActionType { doing, done, fail }
  18. let action:ActionType = ActionType.done // 1
  19. // any, 表示任意类型, 可以绕过类型检查器对这些值进行检查
  20. let color:any = 1
  21. color = 'red'
  22. // void类型, 当一个函数没有返回值时,通常会设置其返回值类型是 void
  23. function getName(): void {
  24. console.log("This is my name");
  25. }
  26. // object类型, 表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型
  27. let a:object;
  28. a = {props: 1}
  29. 复制代码

以上是typescript中常用的几种类型, 也是我们必须掌握的基本知识. 这里值得补充的是typescript的类型断言, 也是解决ts警告的利器,比如我们确切的知道某种数据的数据类型,我们可以这么做:

  1. let arrLen: number = (someValue as Array<string>).length;
  2. // 解决window下设置属性的ts报错, 但不可滥用
  3. (window as any).name = 'xuxi'
  4. 复制代码

2. 接口

TypeScript的核心原则之一是对值所具有的结构进行类型检查。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。接下来我们看看如何定义和使用接口(Interface):

  1. interface Product {
  2. name: string;
  3. size: number;
  4. weight: number;
  5. }
  6. let product1:Product = {
  7. name: 'machine1',
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/1015134
推荐阅读
相关标签
  

闽ICP备14008679号