基礎(chǔ)類(lèi)型
布爾類(lèi)型
let bool: boolean = false
數(shù)值類(lèi)型
let num: number = 123
num = 0b1111011 // 二進(jìn)制123
num = 0o173 // 八進(jìn)制123
num = 0x7b // 十六進(jìn)制123
字符串類(lèi)型
let str: string = 'abc'
str = `數(shù)值是:${num}`
數(shù)組
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]
元祖(指定長(zhǎng)度疗疟,類(lèi)型轿衔,順序)
- 嚴(yán)格規(guī)定?了數(shù)據(jù)的長(zhǎng)度幕侠,類(lèi)型和順序
- 定義方式
let tuple: [string, number, string] = ['1', 2, '3']
枚舉類(lèi)型
enum Roles {
SUPER_ADMIN = 1, // 指定開(kāi)始位置
ADMIN,
USER
}
console.log(Roles.SUPER_ADMIN, Roles.ADMIN, Roles.USER)
console.log(Roles[1])
any類(lèi)型(表示任意類(lèi)型)
- 表示變量將來(lái)能賦予任意類(lèi)型
- 定義方式
let any: any = 'abc'
any = 456
void(表示不是任何類(lèi)型)
- 一般情況下唤殴,聲明一個(gè)函數(shù)档痪,如果該函數(shù)沒(méi)有任何返回值枢里,那么該函數(shù)的返回值為void類(lèi)型
- void類(lèi)型的值可以被賦予undefined
- 非嚴(yán)格模式下绑榴,void類(lèi)型的值可以被賦予null哪轿,需要修改配置項(xiàng)
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類(lèi)型
- 永遠(yuǎn)不可能存在有返回值的類(lèi)型
- 一般用于拋出錯(cuò)誤的函數(shù)和死循環(huán)
- never類(lèi)型可以是任意類(lèi)型的子類(lèi)型,但是never類(lèi)型不能被賦值為任何類(lèi)型
const errorFunc = (errMsg: string): never => {
throw new Error(errMsg)
}
const infinitFunc = (): never => {
while(true) {}
}
對(duì)象類(lèi)型
let obj: object = {
name: 'zhangsan',
age: '30'
}
const consolePerson = (person: object): void => {
console.log(person)
}
consolePerson(obj)
類(lèi)型斷言
- 定義形式1:
(<string>variable)
- 定義形式2:
(variable as string)
-- 在react的jsx語(yǔ)法中翔怎,只支持這種定義形式
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))