TS所有类型
类型 | 例子 | 描述 |
---|---|---|
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中新增类型 |
使用字面量进行类型声明
限制变量的值就是该字面量的值
let a:10;
a = 10;
| 联合类型
使用|
来连接多个类型
这样可以限制变量在某几个值之间
let a:"male"|"female";
b = "male";
b = "female";
let a:boolean|string;
a = true;
a = "hello";
any
任意类型
一个变量设置类型为any之后相当于对该变量关闭了TS的类型检测
使用TS时,不建议使用any类型let d:any;
//显式any
let d:any;
d = 10;
d = "hello";
d = true;
声明变量如果不指定类型,则TS解析器会自动判断变量的类型为any(隐式any)
unknown
未知类型的值
- any可以赋值给任意变量,把别的变量的类型检查也关闭了
- unknown类型变量的值不能直接赋值给别的变量
unknown实际上就是一类型安全的any
如果想要赋值,先检查数据类型
let d:unknown;
d = 10;
d = "hello";
d = true;
let s:string;
if(typeof d === "string"){
s = d;
}
类型断言
语法
}//void
```typescript
function fn():void{
}
void用来表示空
以函数为例,就表示没有返回值的函数
函数只要有返回值就会报错
never
永远不会返回结果
function fn():never{
throw new Error("报错了");
}
object对象
语法
{属性名:属性值,属性名:属性自}
// object表示一个js对象
let a:object;//一般不用
let b:{name:string};
b = {name:"name1"};
加个问号表示属性是可选的
let b:{name:string,age?:number};
b = {name:"name1"};
[propName:string]:any
表示可有任意类型的属性
let c:{name:string,[propName:string]:any};
c = {name:'name1',age:18,gender:'male'};
[propName:string]:string
属性值只能是字符串
设置函数结构的类型声明
语法
(形参:类型,形参:类型...) => 返回值
let d:(a:number,b:number) => number;
d = function(n1,n2){
return n1+n2;
}
array
所以数组的类型声明
类型[]
string[]
表示字符串数组
let e:string[];
e = ['a','b','c'];
Array<类型>
Array<number>
表示数值数组
let f:number[];
let g:Array<number>;
g = [1,2,3];
tuple
语法
[类型,类型,类型]
let h:[string,number];
h = ['hello',18];
Enum枚举
在多个值之间选择的时候适合用枚举
enum Gender{
Male = 0,
Female = 1
}
let i:{name:string,gender:Gender};
i = {
name:'name1',
// 一般几个值之间的范围用数字
gender:Gender.Male
}
console.log(i.gender === Gender.Male);