TypeScript学习笔记之二基本数据类型

96
摸着石头过河_崖边树
2018.12.06 22:52* 字数 519

一、使用环境

  • Mac 电脑
  • WebStorm
  • TypeScript3.x版本

二、需要了解的基本类型有哪些

数据类型有两种:
A、原始数据类型 (Primitive data types)

  • boolean 布尔值
  • number 数值
  • string 字符串
  • null 空值
  • undefined 未定义
  • Symbol ES6 中的新类型

B、非原始类型

  • 数组
  • Tuple 元祖
  • enum 枚举
  • never 永不存在的值的类型
  • void
  • any 任意类型
  • 联合类型
  • 函数类型
  • 对象类型

三、原始数据类型

3.1 布尔类型(boolean)
  let  isSuccess : boolean = true;   // 只有true/false

注意:使用构造函数 Boolean 创造的对象不是布尔值,返回一个Bool对象。

 let  boolObjcet : any = new Boolean(1);  //返回bool对象
3.2 数值类型(number)
var  pricecount : number = 3.04;
var  notANumber : number = NaN;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

注意:所有数字都是浮点数

3.3 文本数据类型(string)
//字符串
let  personname : string = '小名';
//多行字符串  模板字符串
let  moreString: string = `Hello, my name is ${personname} I will be good ${isSuccess}`; 
 //其中`用来定义 ES6 中的模板字符 串,${expr} 用来在模板字符串中嵌入表达式。

注意:

  • 字符串可以使用双引号( ")或单引号(')表示;
  • 字符串模版使用(``),变量使用${变量名}
3.4 空类型 Null 和 Undefined 以及void

void 表示没有任何类型 ,没有函数返回值
undefined 类型的变量只能被赋值为 undefined
null 类型的变量只能被赋值为 null。
与 void 的区别是,undefined 和 null 是所有类型的子类型

 let  nul : null = null;
 let  defin : undefined = undefined;
 function message(mess : string) : void{}

但是有时候你可能会看到如下情况,是联合类型,稍后会讲解

let a : string | null | undefined  
3.5 Symbol ES6 中的新类型

symbol类型的值是通过Symbol构造函数创建的
特点一:可选的字符串key

const symbol = Symbol("key");  // 可选的字符串key

特点二:字符串一样,symbols也可以被用做对象属性的键。

class ClassSymbol {
[symbol](){
    return "344";    // 
   }
}

特点三:Symbols是不可改变且唯一的。

let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, symbols是唯一的

特点四:可以与计算出的属性名声明相结合来声明对象的属性和类成员。

 let  cc = new ClassSymbol();
console.log(cc[symbol]());

symbol成为了一种新的原生类型,就像number和string一样

特点五:内置的symbols表示语言内部的行为

  Symbol.hasInstance方法,会被instanceof运算符调用。
   构造器对象用来识别一个对象是否是其实例。
  Symbol.isConcatSpreadable布尔值,
  表示当在一个对象上调用Array.prototype.concat时,这个对象的数组元素是否可展开。
  Symbol.iterator方法,被for-of语句调用。返回对象的默认迭代器。
  Symbol.match方法,被String.prototype.match调用。正则表达式用来匹配字符串。
  Symbol.replace方法,被String.prototype.replace调用。正则表达式用来替换字符串中匹配的子串。
  Symbol.search方法,被String.prototype.search调用。正则表达式返回被匹配部分在字符串中的索引。
  Symbol.species函数值,为一个构造函数。用来创建派生对象。
  Symbol.split方法,被String.prototype.split调用。正则表达式来用分割字符串。
  Symbol.toPrimitive方法,被ToPrimitive抽象操作调用。把对象转换为相应的原始值。
  Symbol.toStringTag方法,被内置方法Object.prototype.toString调用。返回创建对象时默认的字符串描述
  Symbol.unscopables对象,它自己拥有的属性会被with作用域排除在外。

     如需了解更多知识

TypeScript学习笔记之五类(Class)
TypeScript学习笔记之四接口(Inferfaces)
TypeScript学习笔记之三非原始数据类型
TypeScript学习笔记之二基本数据类型
TypeScript学习笔记之一初见TypeScript

TypeScript合集
Web note ad 1