Angular v14使用ngx-mask时出现TS2322 null类型不可赋值报错
ngx-mask启动报TS2322类型错误修复方案
问题复现场景
- 依赖安装完成后参照官方Quickstart在
app.module.ts编写如下配置:
import { NgxMaskModule, IConfig } from 'ngx-mask' export const options: Partial<IConfig> | (() => Partial<IConfig>) = null; @NgModule({ imports: [ NgxMaskModule.forRoot(), ], })
- 运行环境:Angular v14、Node 14.19
- 执行
ng serve时终端抛出错误:
error TS2322: Type 'null' is not assignable to type 'Partial
| (() => Partial )'.
- 错误截图:

报错原因
Angular 14默认开启严格的TypeScript空值检查,官方示例中直接给options赋值null的写法不符合类型约束——声明的联合类型Partial<IConfig> | (() => Partial<IConfig>)没有包含null类型,TS校验不通过。另外原示例代码定义了options变量但没有传入NgxMaskModule.forRoot(),本身也是无效写法,即使类型不报错配置也不会生效。
修复方案
方案1:直接传入空配置(推荐)
删除无用的options常量定义,直接给forRoot()传入空对象作为默认配置即可,后续要自定义掩码规则直接在对象内添加配置项:
import { NgxMaskModule } from 'ngx-mask' @NgModule({ imports: [ NgxMaskModule.forRoot({}), ], })
方案2:修正options类型定义
如果需要保留提前定义配置变量的写法,给类型联合补充null类型,同时把options传入forRoot():
import { NgxMaskModule, IConfig } from 'ngx-mask' export const options: Partial<IConfig> | (() => Partial<IConfig>) | null = null; @NgModule({ imports: [ NgxMaskModule.forRoot(options), ], })
方案3:关闭严格空值检查(不推荐)
在项目根目录的tsconfig.json中将strictNullChecks配置项设为false,该方式会降低全项目的类型安全性,无特殊兼容需求不建议使用。
内容的提问来源于stack exchange,提问作者Jeb50
相关产品推荐
相关产品推荐

