关于ts类型的笔记
theme: condensed-night-purple
// let a = 10;
// //声明变量a,类型指定为number,以后使用过程中,a智能是数字
// let a1 : number = 22
// // a1 = 33;
// // a1 = "hello"
// // let c : boolean = false;
// // 变量赋值和声明同时进行,ts可自动类型检测
// let c = false;
// // c = 123;
// function sum(a : number,b : number) : number{
// return a + b
// }
// // sum(1,"2")
// let result = sum(1,3)
// console.log(result);
//使用字面了进行类型声明(类似常量,不能修改)
let a : 10;
a = 10;
// a = 11 报错()
// 可以用 | 连接多个类型
let b : "male" | 10 ;
b = 10;
b = "male";
// b = 11 报错
//变量设置any后相当于对该变量关闭了ts的类型检测 (显示)
// 声明变量不赋值,ts解析器回自动判断变量为any(隐式)
let d : any;
d = 10;
d = "hello";
d = true;
//unknown表示未知类型的值,效果和any类似
let e : unknown
let s : string;
//d的类型是any,可以赋值给任意变量
s = d;
//e是未知类型,赋值其他类型回报错
// s = e;(报错)
if(typeof e == "string"){
s = e;
}
// 类型断言 as xxx,可以告诉解析器变量的类型
s = e as string
s = <string>e
function fn(number : number){
if(number > 0){
return true
}
return 123
}
//void表示为空,函数为例,表示没有返回值的函数
function fn1() : void{}
//never 表示永远不会有返回结果
function fn2() : never{
throw new Error("报错")
}
//object
// {} 可以用来指定对象中可以包含哪些属性, 属性后面加 ? 表示属性可以选,有没有都行
let aa : {name : string , age ? : number};
aa = {name : "zz"}
//[propName : string] : any 表示任意类型的属性,一个对象后面可以包含任意类型任意个数的属性都无所谓proname是随便写的,什么名字无所谓
let bb : {name : string , [propName : string] : any}
bb = {name :"xx",age : '111' ,class :281}
//function
// 设置函数结构类型声明
// 语法就是 (形参:类型,形参:类型)=> 返回值
let dd : (a : number,b : number) => number;
dd = function(n1,n2){
return n1 + n2
}
// 数组类型声明
// 类型[]
// Array<>
//字符串数组,数组里都是字符串
let ee : string[];
ee = ["a","b"];
// ee = [1,12]
// number数组
// let ff : number[];
let ff : Array<number>
ff = [1,2];
// ff = ["1","2"];
// 元组 固定长度的数组
let h : [string,string] = ["hello","zzz"]
// 枚举
enum Gender{
Male = 0,
Female = 1
}
let i :{name : string,gender:Gender};
i = {
name:"zz",
gender:Gender.Male
}
console.log(i.gender == Gender.Male);
let j : {name : string} & {age : number}
j = {name : "zz",age :18}
//类型的别名
type myType = 1 | 2 | 3 | 4 | 5;
let m : myType
m = 1
// m = 7
// 57
// tsc xxx -w 自动编译(当前文件)
let ccc = "hello"