奇怪的 TypeScript 规则

2023-02-06

公司项目的 TypeScript 一直有个让我感觉很奇怪的地方,就是任何 JSX 组件的参数,还是一个对象定义的参数,都可以比预先定义的规则要多,且不会报错。而这个类型定义我并没有使用 extends 还是 partial 又或者是 as 一类的操作。

interface IPerson {
  name: string;
}

const person: IPerson = {
  name: "Paul",
  // 应该会报“对象字面量只能指定已知属性”
  sex: "male"
}

这种全局性的规则,我一直认为是 tsconfig 的问题,一番查找后还是找出了这个叫 suppressExcessPropertyErrors 的配置,大概意思就是忽略规则外额外加入的属性。

除此之外还有一个叫 suppressImplicitAnyIndexErrors 的配置,这个规则是对象/数组的索引类型验证,在我使用的 Vite 官方 React TS 模版里面,这是必须严格对待的,所以养成这种习惯也并不是啥不好的事情哦。

多云 一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君