typescript 基础知识,试写一下

ok1.png

学习一个编程技术,掌握基础的知识(如果没有了解基本知识,可以看一下点我查看),试着去写一写,可以加深理解,也许这也是一种不错的方式。在业务需求,技术方向确定后,我们通常要经历3个阶段:

  1. 构架设计:整个业务可以设计为几个部分(也就是对关键实体进行抽象),它们是如何进行联动
  2. 业务抽象:对业务模块的职责明确,有哪些抽象类,抽象方法,提供哪些插件机制,是一个复杂过程
  3. 细节实现:对抽象类,抽象方法的实现,一些变量,常量的定义

以上的3个阶段,基本上是从构架设计 -> 业务抽象 -> 细节实现, 开发过程中可能会来回穿插,不断的修正调整趋于相对稳定。架构设计方面,就不班门弄斧了,以免给人误导。我们侧重 typescript 的开发类型声明,我们从基本类型声明开始,然后组成一个业务模块。

为了使过程更加简单,结合业务,从javascrpte 基本数据类型 到 引用的数据类型

基本数据类型

布尔值,字符串,数字,是一些经常使用到的基本数据类型

// 账号
let account: string | number = "";

// 密码
let password: string = "";

// 手机号
let phone: number = 0;

// 是否记住密码
let keepPwd: boolean = false;
复制代码

引用数据类型

object 对象,数组是一些高频使用的引用数据类型

// 登录请求参数
interface LoginParam {
  // 账号:字符串 或者 数字
  account: string | number;
  // 密码
  password: string;
  // 是否记住密码
  keepPwd?: boolean;
}

// 登录返回参数
interface UserInfo {
  userId: number;
  name: string;
  nickName?: string;
  phone: number;
}

type Status = 0 | 1 | 2 | 3;

// 列表项
interface ListItem {
  readonly id: string;
  name: string;
  status: Status;
}

// 列表
type List = ListItem[];

// 分页
interface Pagination<T extends number | string = number> {
  // 当前页码
  current: T;
  pageSize: T;
  total: T;
}

// 后台接口列表返回数据
interface ResponseList {
  // 业务 code 码
  //  200 代表成功,其它失败
  code: number;
  // 成功 / 错误,后台返回的描述信息
  message: string;
  // 业务数据
  data: {
    list: List;
    pagination: Pagination;
  };
}

复制代码

fetch 调用后台的接口

在进行CURD 操作时,是通过调用后台接口实现,resful 接口有2个部分组成:

  • 请求参数:req
  • 响应数据:res

此时,你要用命令安装一下: npm i axios 或者 yarn add axios,这个库在安装时,已经把声明文件一并安装好了,可以把光标虚浮在 axios 上, 用 command + 单击 查看定义


// 登录请求参数
const fetchLogin = (params: LoginParam) =>
  axios.post<UserInfo>("/login", params);

// 获取列表
const fetchList = (params: Pagination) => axios.post<UserInfo>("/list", params);

// 修改列表项
export interface ItemReq {
  id: number;
  name?: string;
  status?: string;
}

const fetchUpdate = (params: ItemReq) =>
  axios.post<UserInfo>("/update", params);

// 批量删除列表项
export type IdSetReq = number[];
const fetchDelete = (params: IdSetReq) =>
  axios.post<UserInfo>("/delete", params);

复制代码

结束语

以上,从基本的数据类型到引用数据类型,再到resful 接口, 有用到泛型声明,第三方库声明。整个过程比较简单,更多的是要自己动手试着写写,感受一下,只有写才可以更好理解关键细节。这些只是typescipt 的类型的开始,还有很多有趣部分,没有提及到,比如:

  • 类型关系处理:条件类型,或者 ‘|’, 与 ‘&’ , infer
  • 工具类型(Utility Types): 一些内置的类型,往往是作为关系运算来使用,
  • 声明文件: 对公用库,模块编写声明文件
  • 类型的兼容处理,接口interface, class类,枚举等的兼容
  • 项目选项:tsconfig.json
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享