声明变量的关键字
-
let
-
const
-
var(官方不推荐再继续使用)
TypeScript 的类型
基础类型
-
number
string
boolean
array
null
undefined
object
-
tuple
enum
void
never
any
高级类型(部分)
-
union 组合类型
Nullable 可空类型
Literal 预定义类型
数字、布尔、字符串
-
number:表示 整数、浮点数、正负数
-
boolean:真 或者 假
-
string:
""
、''
、``
- 反引号:
``
,可以创建一个字符串模板
- 反引号:
数组(Array)、元组(Tupple)
-
array:
[]
存放任意类型的数据-
let list1: number[] = [1, 2, 3]
-
let list2: Array<number> = [1, 2, 3]
-
let list3 = [1, 'abc']
-
-
tupple:固定长度、固定类型的特殊数组
let person : [number, string] = [1, 'abc']
联合(Union)、字面量(Literal)
-
union:支持多个类型的赋值
let union1: string | number
-
literal:支持指定值的赋值
let literal1: 1 | '2' | true | [1, '2', false]
枚举(Enum)
-
默认从0开始,可以指定值
enum Color{ red, green = 3 , blue = '蓝色' } let color1 = Color.blue console.log(color1) // 蓝色 console.log(Color.red) // 0 console.log(Color.green) //3
Any、Unknown
-
any:动态支持任意类型
-
unknown:未知类型,比any的限制性大一点
let randomValue:unknown if (typeof randomValue === 'function'){ randomValue() } if (typeof randomValue === 'string'){ randomValue.toUpperCase() }
函数返回值:void、undefined、never
-
void:没有声明的变量
function onlyPrint1():void{ console.log('---') }
-
undefined:申明的变量没有赋值
function onlyPrint2():undefined{ console.log('===') return }
-
nerver:执行不到终点
-
function throwErr(msg:string, code: number):never{ throw{ msg, code } console.log('执行不到这里') }
-
function whileLoop():never{ while(true){ console.log('>>>') } }
-
类型适配 Type Assertions
-
使用 Type Assertions 必须对自己的代码有 百分百 的把握才使用,不然运行时可能会出现类型错误
-
let msg:any msg ='strData' // 此时为 any类型 编辑器不会自动补全、联想出对应类型的方法 console.log(msg.replace('t', 'o')) // 方法一:(<类型>变量名) console.log((<string>msg).toUpperCase()) // 方法二:(变量名 as 类型) console.log((msg as string).split('a'))
函数的参数类型
-
给函数的参数指定类型
-
let log1 = (msg:string) => console.log(msg)
-
-
?
可使参数不用必须传递 默认值为 undefined-
let log2 = (msg:string, code?:number) => console.log(msg,code)
-
-
设置参数默认值
-
let log3 = (msg:string, code:number=2) => console.log(msg,code)
-