TypeScript = Type + JavaScript

是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集,为普通的js文件加上类型检测,在静态文件当中编写时发现问题并解决。
image.png

TS Playground

他包含了js的基本类型:number,string,null,undefined,bigint,symbol,boolean,object

  1. const a:number = 1
  2. const b:string = '1'
  3. const c:null = null
  4. const d:undefined = undefined
  5. const e:bigint = 123456n
  6. const f:symbol = symbol('hallo')
  7. const g:boolean = false
  8. const x:object = {} //
  9. const x:Array<number | string | boolean> = [1,'2',false] //泛型
  10. //函数
  11. const add = (a:number,b:number):number => a+b
  12. const add = (a:number,b:number) => number = (a,b) => {a+b}
  13. //type声明
  14. type ADD = {(a:number,b:number) => number}
  15. const add:Add = (a,b) => {a+b}
  16. //interface 声明 使函数有多个属性
  17. interface AddWithProps{
  18. (a:number,b:number):number
  19. xxx:string
  20. }
  21. const add:AddWithProps = (a,b) => a + b
  22. add.xxx = '123'

还额外有一些TS额定类型:any,unknow,void,never,tuple,enum

  1. //never
  2. type a = number & stringl
  3. let b:a = 123
  4. //unknow
  5. type C = {name:string}
  6. let a:unknow = //JSON.parse('{"name":"Jerry","age",:"18"}')
  7. (a as C).name
  8. //使用前不知道类型
  9. //void 一般指函数返回一个空
  10. let print:() => void = function(){console.log('hallo')}
  11. //断言
  12. let p:string = '123'
  13. (p as any).push(456)
  14. //元组tuple
  15. let p:[number,number] = [100,200]
  16. (p as any).push(456)
  17. //枚举enum
  18. enum Color {Red, Green, Blue}
  19. let c: Color = Color.Green; //1
  20. //按下标输出

npm install typescript --save-dev
//
yarn add --dev typescript
//
pnpm i -g typescript

第三方库的.d.ts文件可以快速查找函数的接受类型,还有很好的代码提示功能

联合类型’|’和交叉类型’&’

  1. //联合类型
  2. type A ={
  3. name:string;
  4. age:number
  5. }
  6. type B = {
  7. name:string;
  8. gender:string
  9. }
  10. const a = (x : A | B)=>{
  11. if(typeof x === 'number'){
  12. x.toFixed()
  13. }else{}
  14. }
  15. //交叉类型
  16. type A = {name:string} & {age:number} //用于交叉复杂类型
  17. const a:A = {
  18. name:'jack',
  19. age:23
  20. }

泛型

  1. //广泛的类型
  2. type A<T> = T | T[]
  3. type A<T> = (a:T,b:T) =>T
  4. const ADD:A<number> = (a,b)=> a + b
  5. const ADD:A<string> = (a,b)=>a + ' ' + b

React 的 FunctionComponent泛型

image.png
image.png

重载

  1. function SUM (a:number,b:number):number;
  2. function SUM (a:string,b:string):string;
  3. function SUM (a:any , b:any):any {
  4. //两种判断方式
  5. //if(arguments.length===1)
  6. //if(typeof a === 'number')
  7. }

image.png