TS日常经验

本文由王哲弘分享,主要探讨了在使用TypeScript进行React开发时的一些常见问题和解决方案,包括:索引签名的参数类型避免使用联合类型,Redux状态类型定义的注意事项,子组件如何继承父组件的props类型,以及Redux的核心概念和TypeScript中的相关类型应用。
摘要由CSDN通过智能技术生成

作者:王哲弘

1、索引签名的参数类型不能是联合类型

type Key = 'foo' | 'test';
type IndexType = {
   
  [prop: Key]: number | string;
}
let obj: IndexType = {
   
  foo: 1,
  test: 'hello'
}
obj['test'] = 'hahaha';

以上代码编译时会出现以下警告:

TS1337: An index signature parameter type cannot be a union type. Consider using a mapped object type instead.

我们需要改写IndexType 类型,如何修改呢?上面的警告已经给出提示,那就是使用映射类型代替:

type IndexType = {
        [p in Key]:  number | string; }

2、redux state 类型定义时不要写成可选属性(以下是错误示范)

export interface ModifyGrades {
   
  savedList?: ModifyItem[]; // 已保存的修改记录列表
  groups?: Groups[]; // 题型数据
  questions?:Question[];
  subjectLists?: Subject[];
  summaryId?: number;
  studentAnswers?: StudentAnswers;
  title?: string; //业务头额外标题
}

正确的做法是在某组件需要的时候使用映射类型进行转换(ts中已经定义了Partial类型,可以直接使用) 如下

interface ModifyGrades {
   
  savedList: ModifyItem[]; // 已保存的修改记录列表
  groups: Groups[]; // 题型数据
  questions:Question[];
  subjectLists: Subject[]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值