TypeScript类型判断为何有问题?-灵析社区

ApplePro

定义如下 export interface Options { serializer?: (value: T) => string; deserializer?: (value: string) => T; defaultValue?: IFunction | T; } 使用 if (typeof options.defaultValue === "function") { options.defaultValue(); } 出现下面的报错: ![image.png](https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241103/c97bd6f5528718fff36e98c1756c41bf.png) 为什么在使用typeof的情况下ts对类型判断还是有问题?平常在消费联合类型的时候,都只需要借助typeof就能达到缩小类型范围的目的,但是这里没有效果,我想问下什么时候会出现这种问题? 我知道解决方案: 1. 通过强制的类型断言来告诉ts这是一个函数 2. 通过is关键字来做类型预测 但是不知道什么时候需要这么去解决,只有报错的时候才会尝试这么去解决,恳求大佬解惑。

阅读量:20

点赞量:0

问AI
Ufoooo4U
"T"也可能是个函数,例如"Options void>" 那这时候用"typeof"来收缩函数,就有两个不同签名得函数了,编译器自然无法处理改怎么调用 可以单独限制下"defaultValue"泛型为函数得情况: type MaybeFunction = T extends Function ? never : T | IFunction export interface Options { serializer?: (value: T) => string; deserializer?: (value: string) => T; defaultValue?: MaybeFunction }