前言
思考:为什么要学习TypeScript?躺尸不香吗?
typescript 是 javascript 的一个超集。typescript是一门不同于javascript的新语言,但它可以编译成javascript在浏览器中运行。2014 年 Facebook 推出了 Flow , 微软推出了 typescript。现在6年过去了,显然typescript更胜一筹。Vue3.0 也会抛弃原来flow,用typescript进行重构。所以在ECMAScript 标准推出静态类型检查之前 ,typescript是解决此问题的最佳方案,且包括ES6,ES5。
数据类型
数字型 number
let listData: number = 0b1010 // 二进制
let listData1: number = 0o765 // 八进制
let listData2: number = 6 // 十进制
let listData3: number = 0xf00d // 十六进制
字符串型 String
let name: String = 'iphone'
let years: number = 6
let title: String = `今年是${ name }发布${ years + 1 }年`
布尔型 boolean
let flag: boolean = true
数组型
// 再元素类型后面加[]
let arr: number[] = [1,2]
//使用数组泛型
let newArr: Array<number> = [1,2]
元组型
表示已知元素数量和类型的数组,位置一一对应
let y: [String, number, boolean]
y = ['张三', 1, true] // 运行正常
y = [1, '张三', true] // 报错
console.log(y[1]) // 输出 1
枚举型 enum
用于定义数值集合
enum Color {Ren, Green, Blue};
let c: Color = Color.Blue;
console.log(c) // 输出 2
enum List {
A = 2,
B = 0,
C
}
console.log(List.A) // 输出 2
console.log(List.B) // 输出 0
console.log(List.C) // 输出 1
void 型 void
用于标识方法返回值的类型 表示该方法没有返回值
function hello(): void {
alert('hello')
}
null 型 null
用于对象缺失
undefined 型 undefined
用于初始化变量为一个未定义的值
如果一个类型可能出现 null 或 undefined, 可以用 | 来支持多种类型
let x: number | null | undefined;
x = 1; // 运行正确
x = undefined; // 运行正确
x = null; // 运行正确
never 其他类型 never
包括null和undefined的子类型 代表不会出现的值,声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)
any 任意类型 any
声明为any 的变量可以赋予任意类型的值,任意值是针对编程时类型不明确的变量使用一种数据类型,常用三种情况
1.值会动态改变
let x: any = 2; // 数字型
x = 'hello'; // 字符串型
x = true; // 布尔型
2.任意值允许在编译时可选择地包含或移除类型检查
let x: any = 4;
x.ifItExists(); // 正确,ifItExists方法在运行时可能存在,但这里并不会检查
x.toFixed(); // 正确
3.定义存储各种类型的数组
let arrayList: any[] = [1, false, 'fine'];
console.log(arrayList[1]) // false
arrayList[1] = 100;
console.log(arrayList[1]) // 100