下文将TypeScript简称ts

一、为什么要学

1.1 减少bug,提高质量

  • 强语言,语法等方面异常,编译阶段“提前”报错
  • 支持面向对象,软件设计与工程化更为成熟,更容易做单元测试、持续集成等

1.2 提高效率

  • 语言简单易学
  • ide支持更为友好,如:智能提示、变量强关联、重构等
  • 绝大部分常用类库已经支持

1.3 业内趋势

1.4 代表作品

二、练级攻略

2.1 基础语法

2.2 编码风格

2.3 核心功能

2.4 编译原理

三、适用场景

尤其适合:类库、组件等公共组件开发

四、推荐ide

webstorm > vscode

优点: 开箱即用(无需安装插件)、易于重构【个人觉得非常重要】

缺点: 收费、没idea成熟

五、推荐书籍

六、tsconfig.json配置demo

{
"compilerOptions": {
"pretty": true,
"module": "commonjs",
"importHelpers": true,
"target": "es5",
"lib": [
"es2015",
"es2016",
"es2017",
"es2018",
"es2019",
"dom",
"ES2015.Promise"
],
"allowJs": true,
"sourceMap": false,
"baseUrl": "./src",
"outDir": "./build/src/",
"paths": {
"@/*": [
"*"
],
"tslib": [
"path/to/node_modules/tslib/tslib.d.ts"
]
},
//编译异常时候,禁止发行
"noEmitOnError": true,
//禁止隐性any
"noImplicitAny": true,
//严格的null检查,避免如可选参数,未判断undefined引发的问题等
"strictNullChecks": true,
//未使用的变量,抛出错误
"noUnusedLocals": true,
//未使用的参数,抛出错误
"noUnusedParameters": true,
//检查函数是否有返回值
"noImplicitReturns": true,
//启用严格模式,对类型赋值、类型转换更严格
"strict": true,
//https://mariusschulz.com/blog/downlevel-iteration-for-es3-es5-in-typescript
"downlevelIteration": true
},
"typeRoots": [
"node_modules/@types",
"typings"
],
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules",
"test"
]
}

八、ts的缺点

8.1 不得已的any类型

存在后的坑: any类型,不支持强类型、智能提示等,相当于把ts回退到js

存在原因:

1.兼容性,老代码及外部依赖如webapi接口返回参数类型不确定,只能用any类型;

2.类库不健全,lid.d.ts不全面,导致部分属性、方法的类型描述不完整,得通过添加|any组合类型才能满足需求,不得不用any类型。

改进办法: 有明确类型的通过组合类型来完成类型定义,如: age:int | any,比纯any,IDE能添加相关的属性智能提示及部分错误使用场景下的错误提示

8.2 复合类型没必要

组合类型、交叉类型、索引类型、映射对象类型,意义不大,适用场景少,易滥用,明显降低可读性。js的问题是语言太随意,导致很多程序员把大量的时间浪费在语法上,多向golang学一下

8.3 面向对象不彻底

不支持重载:c#、java没抄好?不是,是底层js不支持

8.4 JS本身诸多缺点

(1)js是门非常容易出bug的语言,当下统计数据多数不准。原因在于生产环境js运行在客户端浏览器,出了bug,要么没前端监控,要么没被QA发现。

(2)js上手很容易,学好很难,一种需求,有N种编码方案,沟通交流成本很高

9. 最佳实践

TypeScript实践总结的更多相关文章

  1. 《Vue3.x+TypeScript实践指南》已出版

    转眼回长沙快2年了,图书本在去年就已经完稿,因为疫情,一直耽搁了,直到这个月才出版!疫情之下,众生皆苦!感觉每天都是吃饭.睡觉.上班.做核酸! 图书介绍 为了紧跟技术潮流,该书聚焦于当下火的Vue3和 ...

  2. Serverless 实战 —— 函数计算 + Typescript 实践

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

  3. 前端项目模块化的实践3:使用 TypeScript 的收益

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  4. TypeScript在react项目中的实践

    前段时间有写过一个TypeScript在node项目中的实践. 在里边有解释了为什么要使用TS,以及在Node中的一个项目结构是怎样的. 但是那仅仅是一个纯接口项目,碰巧赶上近期的另一个项目重构也由我 ...

  5. TypeScript在node项目中的实践

    TypeScript在node项目中的实践 TypeScript可以理解为是JavaScript的一个超集,也就是说涵盖了所有JavaScript的功能,并在之上有着自己独特的语法.最近的一个新项目开 ...

  6. 在React旧项目中安装并使用TypeScript的实践

    前言 本篇文章默认您大概了解什么是TypeScript,主要讲解如何在React旧项目中安装并使用TypeScript. 写这个的目的主要是网上关于TypeScript这块的讲解虽然很多,但都是一些语 ...

  7. Typescript 开发环境的最佳实践

    Typescript 开发环境的最佳实践 0️⃣ git init(略) 1️⃣️️ 初始化:$ yarn add -D ts-node typescript 2️⃣ 生成 tsconfig.json ...

  8. Typescript 最佳实践

    文章列表: <一>大话 TypeScript 基本类型 <二>大话 Typescript 枚举 <三>大话 Typescript 接口 <四>大话 Ty ...

  9. TypeScript 在开发应用中的实践总结

    背景 以前 hybrid app 的移动端开发模式下,H5 和客户端通信的 js sdk 代码使用 js 编写,sdk 方法的说明使用文档输出.对于开发的使用来说,在 IDE 中不能得到友好的参数类型 ...

  10. TypeScript 前端工程最佳实践

    作者:王春雨 前言 随着前端工程化的快速发展, TypeScript 变得越来越受欢迎,它已经成为前端开发人员必备技能. TypeScript 最初是由微软开发并开源的一种编程语言,自2012年10月 ...

随机推荐

  1. 收藏-即时通讯(IM)开源项目OpenIM-功能手册

    OpenIM简介 OpenIM是由IM技术专家打造的开源即时通讯组件,也是目前最受欢迎的开源IM项目之一,目前github star近万.开发者通过集成OpenIM组件,并私有化部署服务端,可以将即时 ...

  2. 加速tortoisegit的show log,减少等待时间

    KMSID: 81703 是否同步到KM: 是 是否原创: 是 标签: 游戏开发 允许复制: 是 允许评论: 是 允许导出PDF: 是 职业库分类KMS: 游戏-游戏程序 查看权限KMS:网易正式员工 ...

  3. NLP涉及技术原理和应用简单讲解【一】:paddle(梯度裁剪、ONNX协议、动态图转静态图、推理部署)

    参考链接: https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/advanced/gradient_clip_cn.html 1. ...

  4. 【4】配置和运行Opencv常见的一些问题总结,以及bug解决。

    相关文章: [1]windows下安装OpenCV(4.3)+VS2017安装+opencv_contrib4.3.0配置 [2]Visual Studio 2017同时配置OpenCV2.4 以及O ...

  5. [Java] 解析Xml配置文件

    1.解析方法 import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;impo ...

  6. Mocha MemoryBufferQueue 设计概述

    目录 前言 MemoryBufferQueue 功能概述 Buffer 模块 API 设计 MemoryBufferQueue 的设计 Partition 的设计 对并发的支持 Partition 的 ...

  7. Hive-安装和部署(Hive3.1.2)

    (一)安装前提 (1) 安装JDK1.8及以上版本 (2) 已经安装MySQL,推荐5.7. (3) 已经安装Hadoop. JDK.MySQL.Hadoop的安装,本文不再介绍. (二)安装Hive ...

  8. BeginCTF 2024(自由赛道)MISC

    real check in 题目: 从catf1y的笔记本中发现了这个神秘的代码 MJSWO2LOPNLUKTCDJ5GWKX3UN5PUEM2HNFXEGVCGL4ZDAMRUL5EDAUDFL5M ...

  9. CF510D Fox And Jumping

    题目链接 题目 见链接. 题解 方法一 知识点:背包dp,STL. 题目意思是让我们判断能否从这些数中选出一些数使得选的数公共gcd为 \(1\),如果可以输出最小花费. 一眼背包dp,但要map超大 ...

  10. 使用JS实现博客搜索关键字高亮

    说明 最近博客添加了搜索功能,有个需求是要针对搜索结果中搜索关键字需要高亮显示. 以便用户可以更快速的挑选自己中意的文章. 原理就是在渲染列表数据中给含有关键字的文本标签添加自定义class,渲染完毕 ...