1、布尔类型。
let bool: boolean;
bool = false;
2、数值类型(包括浮点型, 二进制 八进制 十六进制数值))。
let num: number = 1.2;
let num1: number = NaN;
let num2: number = Infinity;
let num3: number = 1111101000; // 二进制
let num4: number = 3e8; // 16进制
3、字符串类型。
let str: string;
str = '123456789';
str = `数值是${num}`;
4、数组类型。
写法一
let arr: number[];
arr = [1,2,0];
写法二
let arr2: Array<number>;
arr2 = [1,2,0];
联合类型数组
let arr3: (string | number)[] or let arr3: Array<string | number>;
arr3 = [1,2,'0'];
5、元组类型:和数组类似,但是元组中的数据类型顺序、长度必须和规定的类型顺序、长度对应起来。
let tuple: [string, number, boolean];
tuple = ['1', 2, true];
6、枚举类型:一个枚举可以包含零个或多个枚举成员,枚举成员具有一个数字值,它可以是常数或计算得出的值,如果没有初始化就会被当作常数,这是第一项为0,其余为前一项加一。
enum CarStatus{
ON_lINE,
OUT_LINE = 2,
WARNING
}
console.log(CarStatus.WARNING)
7、any类型:任意类型。
let cy: any;
cy = false;
cy = 'dsadsa';
cy = [1,2,2,'fdfsd']
let arr4 : Array<any> = [1,2,'ddd']
let arr5 : any[] = [1,2,'ddd']
8、void类型:什么类型都不是,可以赋值undefined 和 null。
const playFun = (str: string): void =>{
console.log(str)
}
playFun("1")
let v: void = undefined;
let v1: void = null; // 在关闭严格模式下才启作用否则报错
9、null和undefined:在关闭严格模式下null和undefined类型是其他类型的子类型。
let n1: null;
n1 = null;
let n2: undefined;
n2 = undefined;
10、never类型:表示永远不存在的值,never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。
一、抛出异常的情况是never类型。
function error(message: string): never {
throw new Error(message);
}
二、无线循环也是never类型。
function loop(): never {
while (true) {}
}
11、object对象。
let obj = {
name: 'dddd'
}
let obj2 = obj;
obj2.name = 'aaaa';
console.log(obj)
function getObj(obj: object): void{
console.log(obj)
}
getObj(obj)
12、类型断言:将一个联合类型的变量指定为一个更加具体的类型,<string>str 或者 str as string 在JSX语法中只能使用(str as string)这种方式。
下面看一个例子...
const getLength = (str: string | number): number => {
if (str.length || str.length === 0) {
return str.length
} else {
return str.toString().length
}
}
//ERROR in basic-type.ts(90,20)TS2339: Property 'length' does not exist on type 'string | number'.Property 'length' does not exist on type 'number'.
上例中,获取 str.length 的时候会报错。此时可以使用类型断言,将 str断言成 string:
const getLength1 = (str: string | number): number => {
if ((str as string).length || (str as string).length === 0) {
return (str as string).length
} else {
return str.toString().length
}
}
console.log(getLength1('hello')) //5