TypeScript算术运算报错:右侧操作数需为any/number等合法类型问题求解
报错原因
CSSStyleDeclaration类型的所有样式属性返回值均为带单位的字符串类型(例如height返回值格式为"200px"),不属于TypeScript算术运算允许的number/bigint等合法类型,因此触发类型校验报错。
修复方法
需要先将样式字符串转换为纯数字后再执行算术运算,可通过parseInt()(适配整数场景)或parseFloat()(适配小数场景)自动忽略字符串末尾的单位后缀:
const computedNode = window.getComputedStyle(coversContainer) as CSSStyleDeclaration; // 先将样式字符串转成数字再运算 const height = parseInt(computedNode.height, 10); const paddingTop = parseInt(computedNode.paddingTop, 10); const paddingBottom = parseInt(computedNode.paddingBottom, 10); const coversContainerHeight = height - (paddingTop + paddingBottom);
如果你的场景涉及rem/em等非px单位,需要额外做单位换算处理后再运算。
内容的提问来源于stack exchange,提问作者user15909643
相关产品推荐
相关产品推荐

