let a:number; //对变量定义类型
let b = true;//如果赋值了,那么Ts会帮你默认设置类型为你赋值的类型
//函数设置接收的值只能是数字类型,
//传参后面的number代表函数返回值的类型
function sum(a:number,b:number):number{
return a+ b;
}
//字面量类型,一旦生命值不可以修改
let a:10
//可以使用 | 来连接多个类型(联合类型)
let b : "male" | "female";
b = "male“
b = "female“
let c:boolean | string
c= true'
c = 'hello'
//any表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测
//不建议使用any类型,不设置any就是隐式any,设置any就是显示any
let d: any
d = 10;
d = 'hello'
d = true
//unknown 表示未知类型的值
//unknown时间上就是个类型安全的any
//unknown类型的变量,不能直接赋值给其他变量
let e : unknown
e = 10;
e = "hello"
e = true;
//如果需要复制给其他变量,需要判断
if(type e ==='string'){
s = e
}
//第二种方法:类型断言
//可以用来告诉解析器变量的实际类型
s = e as string //第一种写法变量 as类型
s = <string>e //第二种尖括号写法
//void用来表示空,以函数为例,就表示没有返回值的函数
function fn():void{}
//never表示永远不会返回结果
function fn():never{}
object表示一个js对象
//语法:{属性名:属性值}
//属性名后面加上?,表示属性是可选的
let b :{name:string,age? : number}
b = {name:'孙悟空'};
//[propName:string] :any 表示任意类型的属性
let c :{name:string,[propName:string] :any}
c = {name:'猪八戒'}
//设置函数结构的类型声明:
//语法:(形参:类型,形参:类型)=>返回值
let d (a:number,b:number)=>number;
let e:string[]
e = ['a','b','c']
//number[]表示数值数值
let g:Array<number>
g = [1,2,3]
//元组,元组就是固定长度的数组
let h: [string,string];
h=[''hello","abc"]
//enum枚举
enum Gender{
Male = 0,
female =1
}
let i:{name:string,gender:Gender}
i={
name:'孙悟空',
gender:Gender.Male
}
console.log(i.gender == Gender.Male)
//&表示同时
let j : {name:string} & {age:number};
//类型的别名
type = myType = 1|2|3|4;
let k : myType;