基础类型
布尔类型
let bool: boolean = false
数值类型
let num: number = 123
num = 0b1111011 // 二进制123
num = 0o173 // 八进制123
num = 0x7b // 十六进制123
字符串类型
let str: string = 'abc'
str = `数值是:${num}`
数组
let arr1: number[] = [1, 2, 3]
let arr2: Array<number> = [1, 2, 3]
let arr3: (number|string)[] = [1, '2', 3]
let arr4: Array<number|string> = [1, '2', 3]
元祖(指定长度,类型,顺序)
let tuple: [string, number, string] = ['1', 2, '3']
枚举类型
enum Roles {
SUPER_ADMIN = 1, // 指定开始位置
ADMIN,
USER
}
console.log(Roles.SUPER_ADMIN, Roles.ADMIN, Roles.USER)
console.log(Roles[1])
any类型(表示任意类型)
let any: any = 'abc'
any = 456
void(表示不是任何类型)
- 一般情况下,声明一个函数,如果该函数没有任何返回值,那么该函数的返回值为void类型
- void类型的值可以被赋予undefined
- 非严格模式下,void类型的值可以被赋予null,需要修改配置项
strictNullChecks
为false
const consoleText = (text: string): void => {
console.log(text)
}
consoleText('abcd')
let v: void
v = undefined
undefined 和 null
let u: undefined
let n: null
never类型
- 永远不可能存在有返回值的类型
- 一般用于抛出错误的函数和死循环
- never类型可以是任意类型的子类型,但是never类型不能被赋值为任何类型
const errorFunc = (errMsg: string): never => {
throw new Error(errMsg)
}
const infinitFunc = (): never => {
while(true) {}
}
对象类型
let obj: object = {
name: 'zhangsan',
age: '30'
}
const consolePerson = (person: object): void => {
console.log(person)
}
consolePerson(obj)
类型断言
- 定义形式1:
(<string>variable)
- 定义形式2:
(variable as string)
-- 在react的jsx语法中,只支持这种定义形式
const getLength = (target: string|number): number => {
if ((<string>target).length || (target as string).length === 0) {
return (<string>target).length
} else {
return target.toString().length
}
}
console.log(getLength(123))
网友评论