TypeScript是什么?
TypeScript 是一种编译性语言、强类型语言、真正的面向对象,它是 JavaScript 的一个超集。
TypeScript与javaScript的区别
- TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法;
- TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译;
- TypeScript文件的后缀名 xxx.ts (*.ts *.tsx *.dts)JavaScript文件是xxx.js
- 在编写 TypeScript 的文件的时候就会自动编译成 js文 件
TypeScript 的优缺点
优点:
- 新增了其他语言的语法(比如 Interface(接口)、Generics(泛型)、Enums(枚举)、断言等;
- TypeScript 兼容了 ES6 ;
- 兼容大部分第三方库,即使第三方库不是用 TypeScript 写的,也可以编写单独的类型文件供 TypeScript 读取;
- 开源社区活跃;
缺点:
- 需要一些学习成本,需先了解基本 js 内容
编译 TypeScript
经过编译的 TypeScript 文件xxx.ts,会得到一个xxx.js 文件
tsc test.ts
数据类型
Typescript 的数据类型分为两种类型,分别是原始数据类型和非原始类型,本文讲到的是原始数据类型。
原始数据类型 (JavaScript 基本数据类型)
- boolean 布尔值
let isBoolean: boolean = false;
使用构造函数 Boolean 创造的对象不是布尔值,返回一个Bool对象。
let boolObjcet: any = new Boolean(1); //返回bool对象
- number 数值
let pricecount : number = 3.04;
let notANumber : number = NaN //非数值
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; //ES6 二进制
let octalLiteral: number = 0o744; //ES6 八进制
- string 字符串
//字符串
let personname : string = '小名';
//多行字符串支持 ES6 模板字符串
let moreString : string = `Hello, my name is ${personName} I will be good ${isSuccess}`;
- null 和 undefined 这种类型的变量只能被分别赋值为 null 和 undefined,但可以赋值为其他任何类型,它们是所有类型的子类型。
let nullValue : null = null;
let undefineValue : undefined = undefined;
let num : number = undefined;
- Symbol(ES6 提出的新类型) 直接使用 Symbol() 创建新的symbol类型,并用一个可选的字符串作为其描述。每个从 Symbol() 返回的 symbol 值都是唯一的。
let symbol1 = Symbol();
let symbol2 = Symbol(42);
let symbol3 = Symbol('foo');
let symbol4 = Symbol('foo');
console.log(typeof symbol1); //输出 "symbol"
console.log(symbol2 === 42); //输出 false
console.log(symbol3.toString()); //输出 "Symbol(foo)"
console.log(symbol3 === symbol4); //输出 false,具有唯一性
Symbol 类型的值可以作为对象属性的键,与字符串类似
let sym = Symbol("foo");
let obj = {[sym]: 1};
console.log(obj[sym]); //输出1
Symbols也可以与计算出的属性名声明相结合来声明对象的属性和类成员。
const getClassNameSymbol = Symbol();
class C {
//用来计算获取属性名的方法
[getClassNameSymbol](){
return "C";
}
}
let c = new C();
let className = c[getClassNameSymbol](); // "C"
注意,以下这种写法是错误
var sym = new Symbol(); // TypeError