热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascript实战pdf_《TypeScript开发实战》总结

《TypeScript开发实战》是极客时间上的课程,是由搜狗营销事业部高级架构师的梁宵老师出品,总共47章,涵盖了TypeScript所有

62874108f6ba2530fc7390a2ff2fe0fd.png

《TypeScript开发实战》是极客时间上的课程,是由搜狗营销事业部高级架构师的梁宵老师出品,总共47章,涵盖了TypeScript所有用法,以及我们如何在实战中应用TS。本课程还覆盖了一些额外的前端基础内容,比如webpack配置,react编程范式,非常适合初学者。

下面是老师整理的TypeScript实战内容:

这是项目相关代码的github链接,

geektime-geekbang/typescript-in-action​github.com
4a042c930826370db1326f1d1ab9ab05.png

ppt链接:

https://github.com/geektime-geekbang/typescript-in-action/blob/master/ppt/%E3%80%8ATypeScript%E5%BC%80%E5%8F%91%E5%AE%9E%E6%88%98%E3%80%8B%E8%AF%BE%E4%BB%B6.pdf​github.com

因为我对TS有一点了解,所以全程我都是1.5倍数看完。下面我会整理课程的全部内容,

b8924f90bfdb750c7537681c85b3a7fb.png

基础篇

一般编程语言按类型,分为强类型和弱类型,动态类型和静态类型,而JS是弱类型动态语言,在类型转换的时候,隐式的帮你做了很多操作,减少了开发难度,同时也带来一些隐患,在你不想要类型转换的地方做了类型转换,或者一些动态的类型转换导致了代码跑异常,只有在运行时才知道。而TS是一门强类型静态的语言,强大的类型系统,不仅能开发阶段推导类型,带来开发的便利,同时为每一个变量函数声明类型,有助于代码的维护和重构。正如讲师所说,TS的ROI(投入回报率)是勾型的。小型且不长久的项目慎入,越是需要多人合作和生命周期越长的项目,回报率越高。

01542429f45e945de5d72b009b96943d.png

如何搭建TS环境,请自行百度。或者通过网站运行TS,

学习乐园 · TypeScript--Javascript的超集​www.tslang.cn
  • 编写第一个TS程序

let hello: string = 'Hello TypeScript';
document.querySelectorAll('.app')[0].innerHTML = hello;

  • 基本类型

ES6中基本类型,Boolean,Number,String,Array,Function,Object,Symbol,undefined,null

TS数据类型,包含了ES6中所有类型,同时新增了一些类型,void,any,never,元组,枚举,高级类型

  • 枚举类型

通过关键字enum实现

enum Role {teacher: 1,children: 2,other: 3
}const childrenType: Role = Role[children];

  • 接口

interface List {id: number,name: string
}interface Result {data: List[]
}let result: Result = {data: [{ id: 1, name: 'A' },{ id: 2, name: 'B' }]
};

当然接口也可以约束函数

interface Add {(x: number, y: number): number
}let add: Add = (x, y) => x + y;

当然也可以用类型约束,用关键字type

type Add = (x: number, y: number) => numberlet add: Add = (x, y) => x + y;

ts中添加了类型注解

class Dog {constructor(name: string) {this.name = name}static food: string = 'bones';public run() {}protected ;private say = 'wangwang';readonly dog = 'dog';}class Husky extends Dog {constructor(name: string, color: string) {super(props);this.color = color}color: string
}

抽象类,用关键字abstract,只能被继承,不能被实例化。抽象类可以实现多态。

abstract class Animal {eat() {console.log('eat');}// 抽象方法可以不在父类中实现abstract sleep(): void
}const animal = new Animal(); // errorclass Dog extends Animal{constructor(name: string) {super();this.name = name;}run() {}sleep() {console.log('dog sleep');}
}const dog: Dog = new Dog('small dog');dog.eat() // eat;
dog.sleep(); // dog sleep

类型与接口的关系,借用课程的一张图,侵删。

3b01a54cc25ac28cdfda2de70019095c.png

接口之间可以相互继承,类之间也可以相互继承,实现复用。接口可以通过类来实现,但是接口只能约束类的共有成员。

  • 泛型

简单点说,类型也是动态传入,实现类型的灵活。也可以理解为,不预先确定的数据类型,具体类型只有在使用的时候才能确定。

function add(x: T, y: T): T {return x + y;
}add(1, 2);

  • 高级类型

为了语言的灵活性,引入了高级类型

交叉类型 交叉类型需要实现所有的接口方法

interface DogInterface {run() {}
}
interface CatInterface {jump() {}
}class Dog implements DogInterface & CatInterface {run() {}jump() {}
}

联合类型

使代码具有不确定性,增强代码的灵活性。

let a: number | string = 'a';
a = 1;let b: 'a' | 'b' | 'c';let c: 1 | 2 | 3;

索引类型、映射类型、条件类型,用到的场景比较少,可以用到时再去查询。

工程篇与实战篇

  • 配置tsconfig.json

新建一个ts项目

yarn install -g tsc
tsc 'project'

这样就能新建一个TS项目,同时生成一个tsconfig.json文件。

如果一个目录下存在一个tsconfig.json文件,那么它意味着这个目录是TypeScript项目的根目录。tsconfig.json文件中指定了用来编译这个项目的根文件和编译选项。(来自于html中文网)

tsconfig.json - TypeScript 中文文档(v2.4) - html中文网​www.html.cn
80fb0c41e61c62472b0a3c593dbc9a5f.png

,这里面有项目所需配置项说明。

  • 编译工具

一般我们都是基于前端框架,很难像VsCode一样,不借助任何前端框架,所以我们选择编译工具的时候,最好不要用ts-loader,因为它缺少插件支持,并且TS官方团队也选择和Babel合作,兼容现有前端的生态,所以推荐使用Babel。

  • 投入生产

如果我们需要在现有项目中使用TS,需要遵循几个原则,共存原则,宽松原则和严格原则,根据字面意思,可以选择配置tsconfig.json配置项,设置不同对严格等级。而我推荐对部分开启严格模式,先项目一小部分,其他部分采用宽松原则,这样项目能正常开发和稳步迁移。

总结

这个课程很全面讲解了TS,支不支持梁老师,看大家的意愿,而我是通过极客时间送我的7天试用面卡看的视频。我还看完了《React进阶实战篇》,随后送达。将注意力focus到能产生改变的领域,与大家共勉。


写作时间:20190915



推荐阅读
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • TS 类型体操:图解一个复杂高级类型
    ts,类型,体操,图解,一 ... [详细]
  • 前言小伙伴们大家好。从今天开始我们将从 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版) ... [详细]
  • Flow 生态案例学习 | Emerald City为Flow上DAO、教育和开发铺平道路
    原文链接:https://www.onflow.org/post/emer ... [详细]
  • 小编给大家分享一下TypeScript2.7有什么改进,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收 ... [详细]
author-avatar
手机用户2502892757
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有