TypeScript快速上手¶
TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。
安装¶
TypeScript使用npm
进行安装,步骤如下:
# 使用国内镜像
npm config set registry https://registry.npmmirror.com
# 安装 typescript
npm install -g typescript
# 查看typescript版本号
tsc -v
源码文件后缀¶
.ts
运行¶
TypeScript的运行流程如下:
先将TypeScript转换为JavaScript,然后再以JavaScript的方式运行。
变量声明¶
This table is
关键词 | 作用域 | 提升(Hoisting) | 赋值规则 |
---|---|---|---|
let | 块作用域 | 会被提升,但不会被初始化,使用前必须显式声明,否则会报错(进入“暂时性死区”,TDZ) | 不能在同一作用域中重复声明,但可以重新赋值 |
const | 块作用域 | 会提升,但也处于“暂时性死区”,使用前必须显式声明 | 常量,必须在声明时初始化,且不能重新赋值但如果const声明的是对象或数组,其属性或内容是可以被修改的。 |
var | 函数作用域 | 提升到其作用域的顶部,但不会初始化为值,未赋值前默认为 undefined | 可以多次声明和赋值,同名变量不会报错。 |
函数作用域:即变量的作用范围限制在声明所在的函数中。如果在代码块(如 if 或 for)中用 var 声明变量,变量的作用域会扩展到整个函数或全局作用域,与之相关的成为**块级作用域**。
块作用域(block scope):即变量的作用范围限制在声明所在的代码块中
使用示例:
[var/let/const] [变量名] : [类型] = 值;
let name: string = "Alice";
var age: number = 30;
const pi: number = 3.14;
函数声明¶
TypeScript 允许声明带有类型注解的函数,包括参数类型和返回值类型。
类声明¶
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
return `Hello, my name is ${this.name}`;
}
}
注释¶
错误处理¶
try {
throw new Error("Something went wrong");
} catch (error) {
if (error instanceof Error) {
console.error(error.message);
}
}
基本类型¶
string
表示文本数据number
表示数字,包括整数和浮点数boolean
表示布尔值 true 或 falsearray
表示相同类型的元素数组tuple
表示已知类型和长度的数组enum
定义一组命名常量any
任意类型,不进行类型检查void
无返回值(常用于函数)null
表示空值undefined
表示未定义never
表示不会有返回值object
表示非原始类型union
联合类型,表示可以是多种类型之一unknown
不确定类型,需类型检查后再使用
运算符¶
基本和C相同。
条件语句¶
均与C语言相同,故不在赘述。 1. if...else 2. switch...case
循环¶
- for
- while(和C语言相同,同时也有do...while)
for¶
ts中for循环有很多种形式
1.C风格for¶
不在赘述
2.for...in¶
3.for...of¶
let someArray = [1, "string", false];
for (let entry of someArray) {
console.log(entry); // 1, "string", false
}
4.forEach¶
let list = [4, 5, 6];
list.forEach((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
});
5.every¶
let list = [4, 5, 6];
list.every((val, idx, array) => {
// val: 当前值
// idx:当前index
// array: Array
return true; // Continues
// Return false will quit the iteration
});
函数¶
function function_name(param1 [:datatype], param2 [:datatype]):return_type {
// 语句
return value;
}
// return type可以不写,毕竟是js得超集
除此之外,TypeScript
还支持默认参数、可选参数**和**剩余参数。
可选参数¶
带**可选参数**的函数声明如下:
// lastName是一个可选参数
function buildName(firstName: string, lastName?: string) {
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}
剩余参数¶
带**剩余参数**的函数声明如下:
// lastName是一个可选参数
function buildName(firstName: string, ...restOfName: string[]) {
return firstName + " " + restOfName.join(" ");
}
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
匿名函数¶
匿名函数自调用
构造函数¶
暂略
Lambda 函数¶
暂略