typescript 和 javascript几乎一样,拥有相同的数据类型,另外在javascript基础上提供了更加实用的类型供开发使用
和javascript基本一致,也分成:基本类型,引用类型
在基础类型上,typescript增添了void、any、emum等原始类型
在开发阶段,可以为明确的变量定义为某种类型,这样typescript就能在编译阶段进行类型检查,当类型不合符预期结果的时候则会出现错误提示
typescript 的数据类型主要有:
boolean(布尔类型)
number(数字类型)
string(字符串类型)
array(数组类型)
null 和 undefined 类型
object 对象类型
tuple(元组类型)
enum(枚举类型)
any(任意类型)
void 类型
never 类型
tuple(元组类型)
元祖类型,允许表示一个已知元素数量和类型的数组,各元素的类型不必相同,赋值的类型、位置、个数需要和定义(生明)的类型、位置、个数一致
let tupleArr:[number, string, boolean];
tupleArr = [12, '34', true]; //正确
tupleArr = [12, '34'] // 报错
enum(枚举类型)
enum类型是对JavaScript标准数据类型的一个补充,使用枚举类型可以为一组数值赋予别称
enum Color {Red, Yellow, Blue}
let c: Color = Color.Blue;
any(任意类型)
可以指定任何类型的值,在编程阶段还不清楚类型的变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,这时候可以使用any类型,使用any类型允许被赋值为任意类型,甚至可以调用其属性、方法
定义存储各种类型数据的数组时,示例
let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;
void 类型
用于标识方法返回值的类型,表示该方法没有返回值
function hello(): void {
alert("Hello world");
}
never 类型
never是其他类型 (包括null和 undefined)的子类型,可以赋值给任何类型,代表从不会出现的值
但是没有类型是 never 的子类型,这意味着声明 never 的变量只能被 never 类型所赋值。
never 类型一般用来指定那些总是会抛出异常、无限循环
let a:never;
a = 123; // 错误的写法:不能将类型‘number’分配给类型‘never’
a = (() => { // 正确的写法
throw new Error('错误');
})()
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}