| 类型 | demo |
|---|---|
number |
1, -33 |
string |
‘hello’ |
boolean |
true, false |
| 字面量 | 本身 |
any |
|
unknown |
|
void |
|
never |
|
object |
{a: ‘heelo’} |
array |
[1, 2, 3] |
tuple |
[4, 5] |
**enum** |
enum(A, B) |
1. 字面量
演示

使用场景
|或的意思,不光可以用来连接 字面量,也可以用来连接 多个类型(联合类型)

2. any
表示关闭了 ts 对于类型的检测,不建议使用 any。
3. unknown
用
unknown来代替any类型。异同点是一个any类型可以赋值给任意其他类型(非常不安全),但是unknown就不同了,他不可以赋值给其他类型(有校验限制)
与
any区别

- (本质上)
unknown是一个类型安全的any unknown不能直接赋值给其他变量如果一定要赋值,则需要一个判断:
if (typeof a === 'string') {b = a; // 虽然麻烦,但是可以避免出错}
方法二:类型断言 (告诉解析器解析变量的实际类型) ```typescript // 变量 as 类型 b = a as string;
// <类型>变量
b =
<a name="3Ayx8"></a># 4. void和never大多用于函数返回值,不写返回类型会自动判断为 `any`<a name="MRdnS"></a>## 4.1 void没有返回值的函数<a name="SSxbr"></a>## 4.2 never永远不会返回结果的函数```typescriptfunction errorResponse(): never {throw new Error('报错了!');}
5. object
因为js里万物皆可 object,所以并不推荐使用 object。
声明语法:‘{属性名: 属性值类型, 属性名: 属性值类型}’
let test: {name: string, age: number};test = {name: '高老庄吃瓜群众', age: 18};
5.1 可选属性
为了实现对象中某些属性非必填效果,需要在属性值后面冒号前面添加一个 ‘?’,来表示该属性 可选
let test1: {name: string, age?: number};test1 = {name: '高老庄自带板凳吃瓜群众'};
5.2 任意属性
语法:‘[属性值key: key类型]: value类型’
// propName 和 xxx 并不是固定死的,可以是任意值let test2: {name: string, [propName: string]: any};test2 = {name: '高老庄忘带板凳的吃瓜群众', sex: '男', gender: 1};let test3: {name: string, [xxx: string]: any};test3 = {name: '高老庄爬树上的吃瓜群众', sex: '男', gender: 1};
6. Function
也是不推荐直接使用 function,推荐使用下面代码:
let test4: (a: number, b: number) => number;test4 = function (n1: number, n2: number): number {return n1 + n2;}
7. array
let arr: number[];// ORlet arr1: Array<number>;
8. 元组(tuple)
语法:[类型1, 类型2, 类型3]
let tup: [string, number];tup = ['hello', 123];
9. 枚举(enum)
enum Gender {Male = 0,Female = 1}const gender = Gender.Female;
10. & 的作用
let test: {name: string} & {age: number};test = {name: '高老庄吃瓜群众', age: 18};
11. 类型别名
type myType = string;let test: myType;
