ts笔记

75 阅读2分钟

关于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"