let 变量: 类型
let 变量: 类型 = 值
function fn( 参数:类型,参数:类型){ ...... }
1. : number 数字
2. : string 字符串
3. :boolean 布尔值
4. : 字面量 限制变量的值就是该字面量的值,eg:let a: 10; a = 11会报错
5. : any 任意类型,相当于对该变量关闭了TS类型检测,不建议使用
- let e
- e = 'hello' // 可以
-
- let s: string
- s = e // 可以
6. : unknown 类型安全的any,不能直接赋值给其他变量
- let e:unknown
- e = true // 可以
- e = 'hello' // 可以
-
- let s: string
- s = e //报错
-
- //解决
- if(typeof e === 'string'){ s = e }
- s = e as string //类型断言,用来告诉解析器变量的实际类型 s = <string>e
7. : void 空值 没有值(或undefined)常用来设置函数的返回值
8. : never 不能是任何值,永远不会返回结果(throw new Error('报错了'))
9. : object 任意js对象,此种形式不常用,常用以下方式
- // {}用来指定对象中包含哪些属性,语法:{属性名:属性值类型,属性名:属性值类型,... }
- // 在属性名后边加?,表示属性是可选的
- let b: {name: string, age?: number}
- b = {name: 'tom', age: 18} //可以
- b = {name: 'jack'} //可以
-
- // [propName: string]: any 表示任意类型的属性
- let c: {name: string, [propName: string]: any}
- c = {name: 'may', age: 12, gender: '女'} //可以
-
- //设置函数结构的类型声明,语法:(形参:类型,形参:类型,...) => 返回值
- let d: (a:number, b:number) => number
- d = function(n1:string, n2: string): number{ return 10 } //报错,参数类型错误
10. : array 任意js数组,常用方式:类型[],Array<类型>
- let e: string[]
- let f: Array<number>
11. : tuple 元组,TS新增类型,固定长度数组,语法:[类型,类型,类型,... ]
- let h: [string, string]
- h = ['hello', 123] // 报错,类型错误
- h = ['hello', 'world', '你好'] //报错,个数多了
12. : enum 枚举,TS新增类型,将可能的情况列举出来
- enum Gender{
- Male = 0,
- Female = 1
- }
-
- let i: {name: string, gender: Gender}
- i = {
- name: 'hi',
- gender: Gender.Male, //数据库中会将gender值存为0
- }
- console.log(i.gender === Gender.Male)
注:
a. 如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测,可以省略类型声明
b. 可以使用 | (或)来链接多个类型(联合类型),结合字面量,可以将变量限制在某几个值之间
c. 声明变量时不指定类型,则TS解析器自动判断变量类型为any,若不知类型可使用unknown类型
d. &表示同时,let j: {name: string} & {age: number},j同时满足含有name和age属性
e. 类型别名 type
- type myType = 1|2|3|4|5
- let k: myType
- let l: myType