基本数据类型
/**
* 布尔值
* 数值
* 字符串
* 空值 void
* null 和 undefined(是所有类型的子类型,即它俩可以给上述所有类型的变量赋值)
*/
let booleanVal_1: boolean = false;
//let booleanVal2: boolean = new Boolean(1); 是不允许的 因为构造函数Boolean创造的是对象不是boolean值,同理其他基本类型也是(除null 和 undefined)
// 但是直接调用Boolean()返回的就是一个boolean类型的值,同理其他基本类型也一样
let booleanVal_2: boolean = Boolean(1);
console.log("booleanVal_1", booleanVal_1);
console.log("booleanVal_2", booleanVal_2);
let decLiteral: number = 10; //十进制
let hexLiteral: number = 0xf00a; //十六进制
//二进制 八进制数值类型在编译之后会编译为十进制数值
let binaryLiteral: number = 0b1001; //二进制
let octalLiteral: number = 0o777; //八进制
console.log("decLiteral", decLiteral);
console.log("hexLiteral", hexLiteral);
console.log("binaryLiteral", binaryLiteral);
console.log("octalLiteral", octalLiteral);
let str: string = "string"
console.log("str", str);
// 空值 void 主要是用来表示没有返回值的函数,因为声明void类型的变量只能将它赋值为undefined 和 null
function consoleLogFunc(): void {
console.log("this is a return void function");
}
consoleLogFunc();
//null 和 undefined(是所有类型的子类型)
/**
* 注:只有在tsconfig.json文件下启用非strictNullChecks(严格的空校验)时才可赋值给其他类型
* 若启用strictNullChecks(严格的空校验),null 和 undefined 只能被赋值给 void 或本身对应的类型
*/
let unde: undefined = undefined;
let num: number = unde;
console.log("num", unde);
-
编译后二进制 八进制数值自动编译成十进制:
-
不启用严格模式:
-
启用严格模式:
任意值和类型推论,联合类型
一个普通类型,在赋值过程中改变类型是不被允许的。但如果是 any 类型,则允许被赋值为任意类型。
使用any之后
变量如果在声明的时候,未指定其类型且也未赋值,那么它会被识别为任意值类型
仅是对变量进行声明
注:声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。 取得的字符串长度也是任意值,可以对它赋值为其他普通类型
上述可知变量声明但未赋值时,是为 any 即任意值。但是要是在声明时就对其赋值,那么TypeScript 会在没有明确的指定类型的时候推测出一个类型,这就是类型推论。
类型推论示意
联合类型(Union Types)表示取值可以为多种类型中的一种。联合类型使用 | 分隔每个类型。
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法
联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型
网友评论