学习TypeScript | 青训笔记

65 阅读2分钟

这是我参与 ⌈ 第五届青训营 ⌋ 伴学笔记创作活动的第三天

TypeScript发展历史

微信图片_20230119212928.png

  • 2012-10:微软发布了TypeScript第一个版本(0.8)
  • 2014-10:Angular发布了基于TypeScript的2.0版本
  • 2015-04:微软发布了Visual Studio Code
  • 2016-05:@types/react发布,TypeScript可开发React
  • 2020-09:Vue发布了3.0版本,官方支持TypeScript
  • 2021-11:V4-5版本发布

为什么是TypeScript

JS:

是动态类型、弱类型语言

TS:

是静态类型、弱类型语言

静态类型

  • 可读性增强:基于语法解析TSDoc,ide增强
  • 可维护性增强:在编译阶段暴露大部分错误=>多人合作的大型项目中,获得更好的稳定性和开发效率

JS的超集

  • 包含于兼容所有js特性,支持共存
  • 支持渐进式引入与升级

基本语法

基础数据类型

/*字符串*/
const q = 'string';
/*数字*/
const w = 1;
/*布尔值*/
const e = ture;
/*null*/
const r = null;
/*undefined*/
const t = undefined;

=

/*字符串*/
const q: string = 'string';
/*数字*/
const w: number = 1;
/*布尔值*/
const e: bpplean = ture;
/*null*/
const r: null = null;
/*undefined*/
const t: undefined = undefined;

对象类型

const bytedancer: IBtedancer = {
jobId: 9303245,
name:'Lin',
sex:'man',
age:28,
hobby:'swimming',
}

interface IBytedancer {
/*只读属性:约束属性不可在对象初始化外赋值*/
readonly jobId: number;
name: string;
sex: 'man' | 'woman' | 'other';
age: number
/*可选属性: 定义该属性可以不存在*/
hobby?: string;
/*任意属性: 约束所有对象属性都必须是该属性的子类型*/
[key: string]: any;
}

/*报错: 无法分配到"jobId",因为它只读属性*/
bytedancer。jobId = 12345/*成功: 任意属性标注下可以添加任意属性*/
bytedancer.plateform = 'data';
/*报错: 缺少属性"name",hobby可缺省*/
const bytedancer2: IBytedancer = {
jibId: 89757,
sex: 'woman',
age: 18,
}

函数类型

function add(x,y) {
  return x + y;
}
const mult = (x,y) => x * y;
***********************
interface IMulr {
  (x: number,y: number): number;
}
const mult:  IMult = (x,y) => x* y;

总结

TypeScript与js相比的优势

  • TypeScript工具使重构更变的容易、快捷
  • TypeScript引入了JavaScript中没有的“类”概念
  • TypeScript中引入了模块的概念,可以把声明、数据、函数和类封装在模块中
  • 类型安全功能功能在编码期间检测错误,这为开发人员创建了一个更高的编码和调试过程。

接口: 子啊面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用

使用interface关键字定义接口一般首字母大写,有的编程语言中会建议接口的名称加上I前缀

可选属性:可选属性的含义是该属性可以不存在,有时候不要完全匹配一个接口,那么可以用可选属性。