首页 > 其他分享 >TS学习笔记

TS学习笔记

时间:2022-12-05 10:36:09浏览次数:44  
标签:string number 笔记 TS 学习 let 类型 报错 name

### 1. 类型系统
#### 数字类型声明:
let e:number;
#### 字符串类型声明:
let e:string;
#### 布尔类型声明:
let e:boolean=true;
//也可以声明完直接进行赋值,如果变量的声明和赋值是同时进行的,ts 可以自动对变量进行类型检测
等同于 let e=true;
JS 中的函数参数,不考虑类型和个数 function sum(a,b){ return a+b }
TS 定义参数的类型: function sum(a:number,b:number){ return a+b } sum(1,'b') // 此处提示报错:b 不是数字类型
定义返回值的类型:
function sum(a:number,b:number):number{ return a+'aaa' // 此处提示报错: 返回值的类型错误 }
#### 字面量类型声明:
let e:10; e=11 // 此处会进行报错,e 已经被定义为 10,无法再赋值成别的值,有点类似于常量
#### 联合类型,| 用来连接多个类型
let e: "male" | "female"; e="male"; e="female"; e="hello"; // 此处会进行报错,hello 不是 male 或 femle
let e: boolean | string; e=true; e="aa"; e=10; // 报错,10 为数值类型
#### 任意类型:any,可以任意赋值,一个变量设置成 any 后相当于对该变量关闭了类型检测,不建议使用 any
let e:any; e = 10; e = "aaa"; e = true;
关于赋值: let s; // s 的类型为 any s=1234; let e:string; e=s; // e 的类型也被改变
#### unknown 类型
let s:unknow; s=1235; let e:string; e=s; // 报错
#### 类型断言:
不允许不同类型的值进行赋值 let e:unknown; let s:string; e='hello' if(type of e==="string"){ s=e; } 已上写法等同于: s = e as string 或者 s= <string>e
#### void:相对于函数返回值而言
function fn():number{ return 124 } // 此时返回值类型为:number
function fn():boolean{ return true } // 此时返回值类型为:boolean
function fn(){} // 此时返回值类型为:void
function fn(num){ if(num>0){ return 1234 }else{ return false } } // 此时返回值类型为 any: 1234||false, number||boolean
function fn():void{ return 123; // 报错 return true; // 报错 不允许存在返回值 return // 可以 return undefined // 可以 return null // 可以 }
#### never:相对于函数返回值而言
function fn():never{ // 永远没有值 return undefined // 报错,不允许返回 throw new Error("程序报错,终止运行") // 用来提示程序报错,永远不会返回结果 }
#### object 对象
let a:object; a={} a=function(){}
可以直接写成 // {}用来指定对象里包含哪些属性 let a:{} let a:{name:string} a={} // 报错,没有 name 属性 应该写成 a={name:'Tom'} a={name:'Tom',age:18} // 报错,age 没有存在于对象里
let b:{name:string,age:number} b={name:'Tom'} // 不传 age 报错 可以写成 let b:{name:string,age?:number} // ?表示 age 可选 b={name:'Tom'} // 不传 age 可以
let c={name:string} c={name:'Tom',age:12,gender:'female'} // 报错 可以写成 let c={name:string,[propName:string]:any} // [propName:string]:any 表示:任意字符串类型的属性 c={name:'Tom',age:12,gender:'female'} // name 必写,其他随意
<!-- 定义函数 -->
设置函数结构的类型声明 语法: (形参:类型,形参:类型,...)=>返回值 // 声明 let d:(a:number,b:number)=>number // 赋值 d=fucntion (n1,n2):number{ return n1+n2 } // 符合声明
d=fucntion (n1,n2,n3):number{ return n1+n2 } // 报错,n3 未进行声明
#### 数组类型声明:
语法: ① 变量:类型[] ② 变量:Array<类型>
##### 字符串数组
let e:string[]; // string[]: let e:Array<string>; let a:string; a=['a','b',1,2,4] // 报错,1,2,4 不是字符串类型
##### 数值数组
let e:number[];   let e:Array<number>;
##### 任意类型数组
let e:any[];   let e:Array<any>;
##### tuple 元组:固定长度以及类型的数组 tuple
let h:[string,string] h=['aaa','bbb','ccc'] // 报错,规定了两个,不允许写三个
##### enum 枚举
ennum Gender={ male=1, Female=2 } let a:{name:string,gender:Gender} a={ name:'Tom', gender:Gender.male } console.log(a.gender===Gender.male)
let b:string|number; // b 的类型是 string 或者 number let b:string&number // 报错, 不满足既是字符串又是数字的情况 let b:{name:string}&{age:number}; b={name:'Tom',age:18} // 可以
##### type 类型的别名
let c:1|2|3|4; let d:1|2|3|4; 可以写成 type myType=1|2|3|4 let c:myType let d:myType c=7  // 报错,myType里没有7

标签:string,number,笔记,TS,学习,let,类型,报错,name
From: https://www.cnblogs.com/kymming/p/16951606.html

相关文章