公司项目的 TypeScript 一直有个让我感觉很奇怪的地方,就是任何 JSX 组件的参数,还是一个对象定义的参数,都可以比预先定义的规则要多,且不会报错。而这个类型定义我并没有使用 extends
还是 partial
又或者是 as
一类的操作。
interface IPerson {
name: string;
}
const person: IPerson = {
name: "Paul",
// 应该会报“对象字面量只能指定已知属性”
sex: "male"
}
这种全局性的规则,我一直认为是 tsconfig
的问题,一番查找后还是找出了这个叫 suppressExcessPropertyErrors 的配置,大概意思就是忽略规则外额外加入的属性。
除此之外还有一个叫 suppressImplicitAnyIndexErrors 的配置,这个规则是对象/数组的索引类型验证,在我使用的 Vite 官方 React TS 模版里面,这是必须严格对待的,所以养成这种习惯也并不是啥不好的事情哦。