这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
typescript
typescript是用于规范js代码,避免开发出现的许多问题。相比于js,ts使用了静态类型,明确的规定了变量的类型。
基本类型
- 字符串(string)
- 数字(number)
- 布尔值(true)
- null
- undefined
- void(空值)
- never(没有值)
- object(对象)
- array(数组)
- tuple(元组)
- enem(枚举)枚举值枚举名正反映射
- any(未知)
- unkown(未知,更安全不可赋给其他值)
- 字面量(写什么只能用那个值)
关键字
interface:接口
对象
interface 接口名{
readonly(只读关键字) key:type;
key ?:type(可选);
[key:string]:type(其余值);
key:type
}
函数
interface 接口名{
(参数名1:type,参数名2:type):type(返回值);
(参数名1:type,参数名2:type):type(返回值);(函数的重载,提供多个可选项)
}
数组
interface 接口名{
[key:number]:any
}
|:联合
a|b
&:交叉
a&b
keyof
相当于取对象中所有的键做为字符串字面量
范型 in
遍历字面量中的每一种可能
extend
- 限定范式类型
- 类型推断,相当于三元表达式
infer
出现在类型推荐中,用于类型指代
type
指定别名
泛型
当类型在输入是才确定时,同时可以用于表示两个便量类型相同,相当于变量
写法
用于函数:
<T>(arg:T)=>T[]
用于别名:
type 别名<T>=(arg:T)=>T[]
泛型约束
泛型名后用extends关键字
泛型参数默认
类似于es6中的默认参数
数组类型
-
类型+【】
type Iarr1=number[]; -
范式表示
type Iarr2=Arry<string|number|Record<string,number>>Arry,Record分别为数组核对像的别名
-
接口表示
interface Iarr3{ [key:number]:type } -
元组表示
type Iarr4=[number,number,string,string]
ts的编译
使用node工具在根目录输入npx tsc 文件就能够生成以各编译以后的js文件,再将这个js文件引入页面,就能够正常使用