# TS
# 环境搭建
- 下载node.js (opens new window)
- 全局安装typescript
设置淘宝镜像
npm config set registry https://registry.npm.taobao.org
npm i -g typescript
- 创建ts文件(a.ts)
- 注意浏览器不认识ts,需要进行编译
tsc .\a.ts
# 基本类型
# 类型声明
- 类型声明是TS非常重要的一个特点
- 通过类型声明可以指定TS中变量(参数、形参)的类型
- 指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错
- 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
# 语法
let 变量: 类型;
let 变量: 类型 = 值;
function fn(参数: 类型, 参数: 类型): 类型 {
...
}
# 类型
类型 | 例子 | 描述 |
---|---|---|
number | 1, -33, 2.5 | 任意数字 |
string | 'hi', "hi", hi | 任意字符串 |
boolean | true、false | 布尔值true或false |
字面量 | 其本身 | 限制变量的值就是该字面量的值 |
any | * | 任意类型 |
unknown | * | 类型安全的any |
void | 空值(undefined) | 没有值(或undefined) |
never | 没有值 | 不能是任何值 |
object | {name:'孙悟空'} | 任意的JS对象 |
array | [1,2,3] | 任意JS数组 |
tuple | [4,5] | 元素,TS新增类型,固定长度数组 |
enum | enum{A, B} | 枚举,TS中新增类型 |
# 字面量
//类似于常量,只能a或者b
let a: "a" | "b";
// a = "c";//报错
let b: "a" | false | true;
b = true;
# 断言 as
类似于强转
let b: "a" | false | true;
b = true;
let unknowStr: unknown;
//方式1
b = unknowStr as boolean;
//方式2
b = <boolean>unknowStr;
# object
对象可以包含哪些属性
let obj: {
name: string,
age: number,
sex: string;
// ? 表示这个属性可有可无
address?:string
};
obj = {
name: "zs",
age: 18,
sex: "男",
}
let objAnyField: {
name: string,
//上面的写法问题是如果多个不必要的属性需要一个一个写
// [otherField: string]: any ,这样写表示任意的属性都可以
[otherField: string]: any
};
objAnyField = {
name: "12",
age: 19
}
# function
let log = (str: string) => {};
log = function (name) {
console.log(name)
};
# enum
enum Sex {
MAN,
WOMAN,
}
enum Name {
ZS = "张三",
LS = "李四",
}
let User: {
name: Name,
sex: Sex
}
User = {
name: Name.ZS,
sex: Sex.MAN
}
# 别名
好处就是多个定义的类型都相同可以省略重复写
type ageRange = 18 | 19 | 20 | 21 | 22 | 23 | 24;
let age: ageRange;
let day: ageRange;
age = 19;