1.相比js而言ts可以定义变量类型,这样极大减轻了后期的维护成本。
定义变量a为数字后,后期使用时就不能再赋值其它类型。
//声明一个变量a,同时指定他的类型为number
let a:number
let b:string
// a的类型设置为number,在以后的使用过程中a只能是数字
a = 10;
a = 33;
//类型不对就会报错
// a = 'hello'
2.入参参数与返回值也可自定义类型
//约束入参参数的类型与返回值类型
function sum(c:number,d:number):number {
return c + d;
}
console.log(sum(123, 456));
3.也能直接使用字面量来定义a0为一个number
//可以直接使用字面量进行类型声明
let a0: 10;
a0 = 10;
4.自定义联合类型,如果给a1赋值其它类型将会报错。
//可以使用|来连接多个类型(联合类型)
let a1: "male" | "famale";
a1 = "male"
a1 = "famale"
//定义类型 b1可以为布尔类型或者字符串
let b1: boolean | string
b1 = true
b1 = "hello"
5.一个变量设置类型为any后相当于对该变量关闭了ts的类型检测
//any 表示任意类型 不建议使用
let dany: any
//以下都不会报错
dany = "hello"
dany = 23
dany = true
//dany的类型是any,可以直接赋值给任意变量
//s = dany;
6.未知类型unknow等同一个类型安全的any
//unknown 表示未知类型的值
let e: unknown
e = 10;
e = "hello";
e = true
e = "hello";
//unknown 实际上就是一个类型安全的any
//unknown类型的变量,不能直接赋值给其他变量
if (typeof e === "string") {
s = e;
}
//类型断言,可以用来告诉解析器变量的实际类型
s = e as string;
s = <string>e;