加入TypeScript

加入TS

记得我刚开始写JS时,总觉得这个语言的代码检查规则非常奇怪。它太宽松了!在调用对象属性时,即使我把color拼成colour,也不会有任何错误提示。作为一个弱类型语言,它好像尽可能不因错误中断程序,但这样的代码既不安全也不好维护,还会影响开发效率(很难想象因为一个对象方法的拼写错误,我重新完整看了两遍整个文件才排出错误)。

然而,幸运的是,我们有TypeScript。在应用TypeScript的类型检查后,开发体验比纯JS开发好多了。

TS重构

加入TS大家庭后,第一件要做的事就是用TS重构这个网站。重构的过程很顺利,主要内容也是为一些变量添加类型声明和类型断言。 下面是我重构的过程:

(1)更新配置

# 安装typescript依赖
npm install --save-dev typescript @types/react @types/node

# 添加tsconfig.json配置文件,迁移原本jsconfig.json的内容至tsconfig.json

(2)重构代码文件:从根目录开始,逐步迁移所有js,jsxts,tsx

(3)为函数行参添加类型:

export default function AboutLayout({ children }: { children: React.ReactNode }) {...}

(4)为对象添加接口类型:

interface ArticleDataType {
  slug: string
  title: string
  img: string
  date: string
  desc: string
  tags: string[]
}

let article_data: ArticleDataType[]= []

(5)为Next的接口添加Next内置类型:

import { Metadata } from "next"

export const metadata: Metadata = {...}

(6)为无法自动推断类型的变量与state等添加类型声明:

 const [apertures, setApertures] = useState <ApertureType[]>([])
 const timeRef = useRef <NodeJS.Timeout[]> ([])

(7)添加事件类型:

const handleMouseUp = (e: MouseEvent<HTMLDivElement>) => {...}

(8)为部分特殊的变量添加类型断言:

const { frontmatter } = getFrontmatter(content) as {
    frontmatter: Record<string, string>
}
目录
  • 1. 加入TS
  • 2. TS重构