TypeScript入门|青训营笔记

129 阅读2分钟

这是我参加⌈第四届青训营⌋笔记创作活动的第6天。

一,TypeScript发展历史

  • 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?

TypeScript与javascript区别:

JS:动态类型

TypeScript:静态类型

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

三,基本语法

1,基础数据类型

/*字符型*/
const q:string='string';
/*数字*/
const w:number=1;
/*布尔值*/
const e:boolean=true;
/*null*/
const r:null=null;
/*undefined*/
const t:undefined=undefined;

2,对象类型

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

interface IBytedancer{

readonly joId: 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={
jobId:89757,
sex:'women',
age:18,
}

3,函数类型

function add(x,y){
return x+y;
}
const mult=(x,y)=>x*y;


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

/*接口形式*/
interface IMult{
(x:number,y:number):number;
}
const mult:IMult=(x,y)=>x*y;

4,数组类型

type IArr1=number[];
tyoe IArr2=Array<string|nuumber|Record<string,number>>;
type IArr3=[number,number,string,string];
interface IArr4{
[key:number]:any;
}

const ar1: IArr1=[1,2,3,4,5,6];
const ar2: IArr2=[1,2,'3','4',{a:1}];
const ar1: IArr1=[1,2,'3','4'];
const ar1: IArr1=['string',()=>null,{},[]];

5,Typescript泛型

function getRepeatArr(target){
return new Array(100).fill(target);
}

type IGetRepeatArr=(target:any)=>any[];

type IGRepeactArrR=<T>(target:T)=>T[];

/*泛型接口&多泛型*/
interfaceIX<T,U>{
key:T;
val:u;
}
/*泛型类*/
class IMan<T>{
instance:T;
}
/*泛型别名*/
type ITypeArr<T>=Array<T>;

6,字符串/数字/字面量

/*允许指定字符串/数字必须的固定值*/
/*IDomTag必须为html,body,div,span中其中之一*/
type IDomTag='html'|'body'|'div'|'span';
/*IOddNumber必须为1,3,5,7,9中的其中之一*/
type IDomTag=1|3|5|7|9;

个人总结:

通过本节课学习,简单入门了Typescript,了解了Typescript的发展历史,基本语法,与Javascript之间的联系和区别以及Typescript的特性;还了解了Typescript的工程应用。