关于typescript:TypeScript使用总结

47次阅读

共计 2157 个字符,预计需要花费 6 分钟才能阅读完成。

1. 为什么要学

1). 缩小 bug,提高质量

强类型、强语言【枚举、接口、泛型 …】,代码更强壮,语法等异样,编译阶段能“提前”报错

2). 面向对象

反对面向对象,软件设计与工程化更为成熟,更容易做单元测试、继续集成等

3). 提高效率

  • 语言简略易学,尤其是有 C#、java 根底的后端同学
  • 相比 js,代码简洁易读,大型项目实现雷同的性能代码量更少
  • ide 反对更为敌对,如:智能提醒、变量强关联、重构等
  • 绝大部分罕用类库曾经反对智能提醒

4). 业内趋势

  • GitHub 年度报告:TypeScript 超过 C ++ 成第四大语言
  • ts 成为腾讯 2020 年增速第二的语言,仅次于 go
  • 代表作品 github 上应用 ts 得 repo- 按 star 降序

    • vscode
    • node 下一代 -deno
    • angular
    • nest
    • apollo-client
    • …. 不一一举例

2. 练级攻略

  • 根底语法

    • typescript 入门教程:内容少,易上手
    • 官网手册:绝对全面
  • 编码格调

    • 谷歌 -ts 代码格调领导
  • 外围性能

    • tsconfig.json
    • 面向对象
    • 泛型
    • 编译 -> 包大小
  • 软件工程

    • 单元测试
    • 重构
    • 设计模式
    • 面向对象 -Java 编程思维

3. 实用场景

  • 适宜:1) 框架、类库组件开发;2) 业务开发。尤其适宜框架、类库组件开发,倡议先将类库组件 ts,逐渐向业务开发推广

4. 举荐 ide

老手 webstorm > vscode,新手反之

  • webstorm 特点

    • 长处:开箱即用 (无需装置插件)、易于重构【集体感觉十分重要】
    • 毛病:免费、没 idea 成熟
    • 长期:还是要被 VSC 碾压的

5. 举荐书籍

  • TypeScript 入门与实战

    • 举荐级别 A,理由:介绍全面,适宜入门及进阶
  • 深刻了解 TypeScript

    • 举荐级别 B,理由:入门及编译简介

6. 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"
  ]
}

7. 认识

ts 将会是 web 前端开发首选语言

ts 是 js 的超集,不是替代物

  • 写好 ts,还得先学好 js
  • 再学习 ts 语法及面向对象设计
  • 关注 ts 编译原理及编译后果

不得已存在的 any 类型

  • 产生问题:any 类型,不反对强类型、智能提醒等,相当于把 ts 回退到 js
  • 问题起因:1) 兼容,老代码及内部依赖如 WEBAPI 返回的参数类型,在不同浏览器或不同版本的雷同浏览器都不一样,只能定义为 any 类型;2) 类库不健全,lid.d.ts 不全面,导致局部属性、办法的类型形容不残缺,得再类型定义后增加 ” | any” 组合类型能力满足需要,不得不用 any 类型
  • 改良方法:有明确的复合类型,能够通过组合类型来定义类型,如: age: int | any,比纯 any,IDE 能增加 int 类型相干的智能提醒和语法报错

复合类型没必要

  • 穿插类型、索引类型、映射对象类型,意义不大,实用场景少,易滥用,明显降低代码可读性
  • js 的问题是语言太随便,导致很多程序员把大量的工夫节约在语法学习上

面向对象不彻底

  • 不反对重载
  • 办法默认是 public 修饰符

面向对象的边界

  • 服务端开发,如应用 nestjs 等框架,倡议所有代码都面向对象,甚至能够借鉴 java spring,应用面向接口编程,解决依赖倒置的需要
  • 客户端开发,局部场景下,适度应用面向对象,可能会导致包体积变大,须要注意

8. 业内实际

  • 整洁的 js 代码
  • 整洁的 js 代码 - 中文翻译
  • 将超过 5000 万行 JS 代码迁徙到 TypeScript,咱们失去的 10 大见解
  • Typescript Best Practices
  • TypeScript 系列(五)最佳实际

正文完
 0