# TypeScript 编码规范

# 非必要情况下不能使用 any

// bad
const data: any = {
  name: 'name',
  age: 18,
  address: 'beijing',
}

interface ListItem {
  name: string
  age: number
  address: string
}

// good
const data: ListItem = {
  name: 'name',
  age: 18,
  address: 'beijing',
}

如果一个对象有多层嵌套,并且数据过多,不确定性太大。可以使用 AnyObject 来代替 any

type AnyObject = Record<string, any>

# 接口 API 返回值需要使用 interface 进行声明

interface Params {
  id: string
  name: string
}

interface ListItem {
  name: string
  age: number
  address: string
}

export function getListData(params: Params): Promise<ListItem[]> {
  return request({
    url: '/people/list',
    params,
  })
}

# 函数/方法注释

在使用 TypeScript 的情况下,函数的参数和返回值已经有类型定义了,所以注释不再需要标明参数和返回值的类型。

不建议使用的用法:

/**
 * 加法函数
 * @param a
 * @param b
 * @returns
 */
function sum(a: number, b: number) {
  return a + b
}

建议使用的用法:

/**
 * 加法函数
 */
function sum(a: number, b: number) {
  return a + b
}