阿里云 个人网站备案,外贸公司取名字大全,欧洲最新消息,网站怎么做跳转链接版本号
typescript: ^5.7.3,
unplugin: ^2.2.0,说明
在使用 unplugin 时 , 我定义插件的参数是 必填的, 使用时却是一个可空参数, 不传参也不会报错, (options?: UserOptions) Return #x1f632;#x1f632;typescript: ^5.7.3,
unplugin: ^2.2.0,说明
在使用 unplugin 时 , 我定义插件的参数是 必填的, 使用时却是一个可空参数, 不传参也不会报错, (options?: UserOptions) Return 怎么突然冒出来个问号… 看源码, 发现是这样定义的类型
type UnpluginFactoryOutputUserOptions, Return undefined extends UserOptions? (options?: UserOptions) Return // UserOptions 允许 undefined 时: (options: UserOptions) Return;
// 使用
let a: UnpluginFactoryOutput{ my_name: string } | undefined, boolean
let b: UnpluginFactoryOutput{ my_name: string }, boolean现在变量 b 和 a 结果一模一样, 都是可空参数 options?: UserOptions, 说明 不指定 undefined , 它也认为我指定了 undefined
解决方案
想要 undefined extends UserOptions 可以正确判断两种情况, 必须在 ts 配置文件中设置 strictNullChecks: true
如果 未启用 strictNullChecks ( 默认是 false ) ts 认为 undefined 可赋值给 所有类型, 就会出现上面的错误情况