美文网首页
Typescript 数据类型

Typescript 数据类型

作者: 弱冠而不立 | 来源:发表于2020-06-22 22:32 被阅读0次

基本数据类型

/**
 * 布尔值
 * 数值
 * 字符串
 * 空值 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 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法

联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型

相关文章

网友评论

      本文标题:Typescript 数据类型

      本文链接:https://www.haomeiwen.com/subject/sawffktx.html