学习笔记—TypeScript(二)

88 阅读2分钟

一门语言当然要从类型开始

JS数据类型

  • 7种原始类型
    • Boolean
    • Null
    • Undefined
    • BigInt
    • String
    • Symbos
  • 引用类型

在TS中使用

let isDone: boolean = false

let age: number = 123
let binaryNumber: number = 0b1111

let myName: string = 'dayTimeAffect'
let mes: string = `hell0 ${myName}`

let u: undefined = undefined

let n: null = null

age = undefined
age = null

mes = undefined
mes = null

可以看到,当正确赋值时,这种ts定义的语法,没有任何作用,就只是单纯增加代码量而已

let isDone: boolean = false
isDone = 1

但是如果当赋值不符合定义时,就会提示报错

any类型

但是上面这样定义的确很舒服,不过有时候就是不知道哪些神奇的api或者后端会给我们什么样的数据类型,那么有一个神奇的类型就出现了

let notSure: any = 1
notSure = true
notSure = 'haha'

any类型可以赋值任何类型,也就是相当于没有类型校验,当万物都是any时,也就是没有ts,所以慎用呀

联合类型

既然any慎用,但是的确我们又不是很清楚这个变量到底是什么类型,或者只知道可能是那些类型,那么我们就可以选择使用联合类型

let numberOrString: number | string
numberOrString = 1
numberOrString = '1'

联合类型可以赋值定义的所有类型,在满足类型校验的同时又保证了一定程度的动态性,可以说是很优美了

数组

除了这些基本类型,我们还有好多好多的类型,比如数组

let arrOfNumbers: number[] = [1, 2, 3]
arrOfNumbers.push(4)
// arrOfNumbers.push('5')

let arrOfStrings: string[] = ['1',`2`,"3"]
arrOfStrings.push('4')
// arrOfStrings.push(5)

数组将相同类型的数据聚合在一起

元组

let user: [string, number] = ['string', 0]

1、元组中的数据类型必须和规定的类型顺序对应起来

2、直接赋值不能越界

3、如果需要添加,可以通过 push等数组的操作方法进行操作或者直接越界赋值,被增加的数据 ,数据类型必须是在元组中声明过的数据类型。

函数

//函数声明
function add(x: number, y: number, z?: number, m: number = 10, n?: number): number{
    if(typeof z === 'number'){
        return x + y + z
    }else{
        return x + y
    }
}
//函数表达式
const add_new: (x: number, y: number) => number = function add(x: number, y: number): number{
    return x + y
}

1、可选参数只能放在后面,ES6的默认赋值相当于可选参数

还有其他的呢? 其他的还没看,下篇文章继续学习