是否存在tsconfig配置或ESLint规则可避免unknown类型的赋值?
解决方案:捕获Array.from类型不安全赋值问题
可以通过修改TypeScript配置或ESLint规则来捕获案例1的问题,具体如下:
一、通过tsconfig.json配置捕获
开启TypeScript的严格类型检查模式,这是最直接有效的方式:
在tsconfig.json的compilerOptions中设置:
{ "compilerOptions": { "strict": true } }
如果不想全局开启严格模式,至少单独开启以下两个选项:
{ "compilerOptions": { "strictNullChecks": true, "noImplicitAny": true } }
开启后,案例1的代码会触发编译错误:
Type 'unknown[]' is not assignable to type 'MyType[]'. Type 'unknown' is not assignable to type 'MyType'.
直接在编译阶段拦截不安全赋值。
二、通过ESLint规则捕获
若无法启用严格模式,可使用@typescript-eslint/no-unsafe-assignment规则,并调整配置扩展检查范围到unknown类型:
在ESLint配置文件中添加:
{ "rules": { "@typescript-eslint/no-unsafe-assignment": [ "error", { "allow": [] } ] } }
该规则默认仅拦截any类型的不安全赋值,清空allow列表后会对unknown类型的赋值也进行检查,触发案例1的报错。
另外,案例2在开启strictNullChecks后会自动触发报错,因为MyType|undefined[]无法赋值给不允许undefined的MyType[]。
内容的提问来源于stack exchange,提问作者kerosene
相关产品推荐
相关产品推荐

