类型声明
- 类型声明是TS非常重要的一个特点
- 通过类型声明可以指定TS中变量(参数、形参)的类型
- 指定类型后,当为变量赋值时,TS编译器会自动检查值是否符合类型声明,符合则赋值,否则报错
- 简而言之,类型声明给变量设置了类型,使得变量只能存储某种类型的值
- 语法:
-typescript<br /> let 变量: 类型;<br /> <br /> let 变量: 类型 = 值;<br /> <br /> function fn(参数: 类型, 参数: 类型): 类型{<br /> ...<br /> }<br />
- 自动类型判断
- TS拥有自动的类型判断机制
- 当对变量的声明和赋值是同时进行的,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中新增类型 |
- number
-typescript<br /> let decimal: number = 6;<br /> let hex: number = 0xf00d;<br /> let binary: number = 0b1010;<br /> let octal: number = 0o744;<br /> let big: bigint = 100n;<br />
- boolean
-typescript<br /> let isDone: boolean = false;<br />
- string
-typescript<br /> let color: string = "blue";<br /> color = 'red';<br /> <br /> let fullName: string = `Bob Bobbington`;<br /> let age: number = 37;<br /> let sentence: string = `Hello, my name is ${fullName}.<br /> <br /> I'll be ${age + 1} years old next month.`;<br />
- 字面量
- 也可以使用字面量去指定变量的类型,通过字面量可以确定变量的取值范围
-typescript<br /> let color: 'red' | 'blue' | 'black';<br /> let num: 1 | 2 | 3 | 4 | 5;<br />
- any
-typescript<br /> let d: any = 4;<br /> d = 'hello';<br /> d = true;<br />
- unknown
-typescript<br /> let notSure: unknown = 4;<br /> notSure = 'hello';<br />
- void
-typescript<br /> let unusable: void = undefined;<br />
- never
-typescript<br /> function error(message: string): never {<br /> throw new Error(message);<br /> }<br />
- object(没啥用)
-typescript<br /> let obj: object = {};<br />
—特殊的object:function
也是同样的适用object中的可选属性,变为可选参数,一般放在最后面
剩余参数写法为:…some:number[]
- array
-typescript<br /> let list: number[] = [1, 2, 3];<br /> let list: Array<number> = [1, 2, 3];<br />
- tuple
-typescript<br /> let x: [string, number];<br /> x = ["hello", 10];<br />
- enum
-typescript<br /> enum Color {<br /> Red,<br /> Green,<br /> Blue,<br /> }<br /> let c: Color = Color.Green;<br /> <br /> enum Color {<br /> Red = 1,<br /> Green,<br /> Blue,<br /> }<br /> let c: Color = Color.Green;<br /> <br /> enum Color {<br /> Red = 1,<br /> Green = 2,<br /> Blue = 4,<br /> }<br /> let c: Color = Color.Green;<br />
- 类型断言
- 有些情况下,变量的类型对于我们来说是很明确,但是TS编译器却并不清楚,此时,可以通过类型断言来告诉编译器变量的类型,断言有两种形式:
- 第一种
-typescript<br /> let someValue: unknown = "this is a string";<br /> let strLength: number = (someValue as string).length;<br />
- 第二种
-typescript<br /> let someValue: unknown = "this is a string";<br /> let strLength: number = (<string>someValue).length;<br />
i

