TypeScript调用函数传undefined未报错?原因及解决方法咨询
TypeScript未标记
fn(undefined)错误的原因及解决方法 原因分析
你代码里的fn2(undefined)应该是笔误,实际是fn(undefined)。这个调用未被标记错误的核心原因是TypeScript的默认配置:
- 默认情况下
strictNullChecks选项处于关闭状态,此时undefined和null会被视为所有类型的子类型,因此可以直接赋值给string类型的参数,不会触发类型检查错误。
解决方法
有几种方式可以让TypeScript正确标记这类问题:
启用严格模式(推荐)
在tsconfig.json中开启strict选项,它包含了strictNullChecks等一系列严格类型检查规则,能从根源上避免这类问题:{ "compilerOptions": { "strict": true } }启用后,
string类型将不再接受undefined或null,此时调用fn(undefined)会触发错误:Argument of type 'undefined' is not assignable to parameter of type 'string'。单独启用
strictNullChecks
如果不想全局启用严格模式,可单独开启该选项:{ "compilerOptions": { "strictNullChecks": true } }显式约束参数类型
可以直接将参数类型指定为排除undefined的string类型,比如利用string & {}({}类型不包含undefined和null):const fn = (a: string & {}) => { return a; } fn(undefined); // 此时会触发类型错误
内容的提问来源于stack exchange,提问作者manuel
相关产品推荐
相关产品推荐

