TypeScript 基础 | 青训营笔记
TypeScript 与 JavaScript
TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。它是一门由微软开发的自由和开源的编程语言。TypeScript 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何现代浏览器上。
将 TypeScript 编译为纯 JavaScript
分号在 TypeScript 中是可选的。以下两组代码分别是示例 TypeScript 代码与其编译生成的 JavaScript 代码。
const hello : string = "Hello World"
console.log(hello)
复制代码
var hello = "Hello World";
console.log(hello);
复制代码
TypeScript 数据类型
相较于 JS 而言,TS 拥有了静态类型,更加严格的语法,更强大的功能。 静态类型可以很好地提升代码可读性,基于语法解析TSDoc,增强IDE。而且可以有效增强项目代码的可维护性,在编译阶段就暴露出大部分的错误。
TypeScript 支持的类型有:
- 任意类型 any,表示其可以赋予任意类型的值
- 数字类型 number,双精度浮点数
- 布尔类型 boolean
- 字符串类型 string
- 枚举 enum
- void
- null
- undefined,未定义
- never
- 数组 Array
- 元组 Tuple
TypeScript 数组
数组对象 Array 使用单独的变量名来存储一系列类型相同的值。
可以先声明再初始化:
var array_name[:datatype];
array_name = [val1,val2,...,valn]
复制代码
也可以声明的同时进行初始化:
var array_name[:datatype] = [val1,val2,...,valn]
复制代码
如果数组声明时未设置类型,则会被认为是 any 类型,在初始化时根据第一个元素的类型来推断数组的类型。
还可以使用 Array 对象创建数组。
Array 对象的构造函数接受以下两种值:
- 表示数组大小的数值。
- 初始化的数组列表,元素使用逗号分隔值。
TypeScript Number
TypeScript 与 JavaScript 类似,支持 Number 对象。
Number 对象是原始数值的包装对象。
Number 对象属性,其实是 Number 构造器属性和 Number 原型属性的统称,因此 Number.prototype 和 Number.prototype.constructor 属性才会列在一起介绍。
Number 对象方法,其实都是 Number 原型的方法,准确来说,应该加前缀 Number.prototype.某个方法。
这里衍生一个知识点:构造器里的方法和属性类似 C++ 类的静态方法和属性,而原型里的方法和属性则等同于 C++ 类的实例方法和属性,所以把原型链作为继承链,能让实例拥有该链上的所有公开方法和属性。
var num = new Number(100.86)
if (num.__prototype__ === Number.prototype)
console.log("实例是继承链的末端");