通俗易懂TS入门-基础篇

191 阅读2分钟

作为JavaScript的超集,ts带来了不一样的开发体验,代码审读越来越容易了,bug也减少了,一起回顾基本篇吧。

TypeScript 的类型

1. number

数字类型,包含小数、还有其他进制的数

let num: number = 6
let big: number = 100n

2. string

let color: string = 'red'

3. boolean

let flag: boolean = true

4. Array

在ts中,Array 一般指所有元素类型相同的值的集合

let arr: Array<number> = [1,2,3,4]

5. 函数

const func = (id: number, sex = 'male') => {
    return {
      id, sex
    }
}
  1. 这里函数的第二个参数是可选值,且有默认值
  2. 类型推断,所以这里不需要加返回值类型

6. any

any表示这个值可以为任意类型,被定义为any就意味着不做任何类型检查,因此在实际项目上非不必要尽量要减少使用。

7. void

常被用做函数的返回值,表示该函数没有返回值,或者返回undefined(函数不返回值 === 返回undefined)

8. object

除了基本类型number, bigint, string, boolean, symbol, null, undefined,其他都是object

9. tuple

tuple 是 数量固定,类型可以各异 版的数组

const [state, setState] = useState('initialState')

这里面[state, setState] 就可以理解为tuple。类似地,在Promise.all([...]),这个返回值也可以理解为tuple。如果在使用中遇到一些ts报错,尝试使用后面加上as const

10. enum

枚举类型,在项目中常用于定义某种场景下的几个值,方便统一使用、统一修改。

11. null & undefined

nullundefined在ts中既表示一个值也表示一种类型

12. unknown

unknown 表示这个值可以是任意值,属于“严格”版的any

13. never

下面这个例子的函数返回值就是never,可以通过类型推断中看出。

 const func = () => {
     throw new Error()
 }

image.png

interface & typeof

interface 不是类型,是接口,它可以让我们创建符合实际场景的的类型。 typeof,别名。

什么时候需要声明类型

一般来说,我们在声明任何变量的时候都应该声明类型,比如:普通变量、函数、组件、hook等,声明参数或者返回值类型,但是由于ts类型推断,有些时候我们不需要声明。

.d.ts

JS文件 + .d.ts文件 = TS文件

.d.ts文件可以让 js文件 维持js的身份,而拥有ts的类型保护,点击类型可以跳转到.d.ts文件。