前言:
随着越来越多的前端项目采用 typescript 来开发,越来越多前端开发者会接触、使用这门语言。它是前端项目工程化的一个重要帮手,结合 vscode 编辑器,给予了前端开发者更严谨、高效的编码体验。但同时,严格的类型检查也会使部分开发者的编码效率有所降低,将时间花费在解决类型冲突、类型不匹配上,从而导致望而却步,迟迟不敢上手。
本文描述了几种绕过 typescript 类型检查的方法,帮助ts开发者在遇上第三方库类型声明有误、上线时间紧张却还被ts类型耽搁开发进度、以及其他奇奇怪怪ts类型声明的场景时,能够快速摆脱ts类型检测,保障项目尽快上线。
注意,本文所提到的方法,只能作为一种最后不得已的hack手段,其目的是为了尽快完成需求而非代码取巧,读者不应该将其当成一种常用的写法并在项目内任意使用!
场景设定:
假设存在一个第三方库,允许开发者通过 json 定义一个表单,其 typescript 类型定义如下:
interface FormItem{
/** 表单类型 */
type:string
/** 显示文本 */
label:string
}interface FormSelectItem extends FormItem{
/** 将表单类型指定为'select' */
type:'select'
/** 新增一个options属性,类型为数组,此类型定义存在错误,没有定义options数组里面的内容 */
options:[]
}type FormRule = (FormSelectItem|FormItem)[]
代码里,FormSelectItem.options
期望的是一个有内容的数组,但因为第三方库给定的类型文件编写错误,没有给出数组内部项的结构,只留下[]
空数组类型定义,导致开发者给FormSelectItem.options
赋予一个有内容的数组都会导致 typescript 报错。
解决方法:
//@ts-ignore
会让typescript编译器跳过注释下一行代码,不对其进行类型检查。通过不检查类型的方式,绕过类型检查