- 类型推导
- 声明变量没有赋值的时候默认为 any 类型
- 声明变量赋值了 则根据赋值类型为准 这个类型是ts自己推导出来的
let name;
let name1 = '测试数据' //string
let name2 = 1 // number
let name3 = true // boolean
对比
- 封装类型
- 我们在使用基本数据类型上的方法其实是ts 把原始数据类型封装成对象类型
- string 是基本数据类型(基元) String 是封装对象类
let str1: string = '1'
let str2 = String(1)
let num: number = new Number(1)
- 类型断言
- 类型断言(只会取两种类型的交集)
- 双重类型断言(可以取第二次断言的类型所有方法)
注意尽量不要使用双重断言,会破坏原有类型关系,断言为any是因为any类型可以被赋值给其他类型
let strOrNum: number | string;
(strOrNum as number)
let strOrNum1: string | boolean;
((strOrNum1! as any) as string);
- 字面量类型
type Direction = 'Up' | 'Down' | 'Left' | 'Right';
let direction:Direction = 'Down';
- 联合类型
- 在使用联合类型时,没有赋值只能访问联合类型中共有的方法和属性
- 这里的!表示此值非空
let name:string | number // 联合类型
console.log(name!.toString()); // 公共方法
name = 10;
console.log(name!.toFixed(2)); // number方法
name = 'zf';
console.log(name!.toLowerCase()); // 字符串方法
let ele: HTMLElement | null = document.getElementById('#app');
// 这里的!表示此值非空
ele!.style.color = 'red'; // 断定ele元素一定有值