02.基础类型
2019-03-22 本文已影响0人
v刺猬v
基础类型
布尔类型
- 定义方式
let bool: boolean = false
数值类型
- 定义方式
let num: number = 123
num = 0b1111011 // 二进制123
num = 0o173 // 八进制123
num = 0x7b // 十六进制123
字符串类型
- 定义方式
let str: string = 'abc'
str = `数值是:${num}`
数组
- 定义方式1:
let arr1: number[] = [1, 2, 3]
- 定义方式2:
let arr2: Array<number> = [1, 2, 3]
- 定义方式3:
let arr3: (number|string)[] = [1, '2', 3]
- 定义方式4:
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))