diff --git a/src/theme/calc/CSSCalculator.ts b/src/theme/calc/CSSCalculator.ts index 7c25fcc..77c2e9a 100644 --- a/src/theme/calc/CSSCalculator.ts +++ b/src/theme/calc/CSSCalculator.ts @@ -1,15 +1,16 @@ +import { isNumber } from '../../util'; import AbstractCalculator from './calculator'; const CALC_UNIT = 'CALC_UNIT'; const regexp = new RegExp(CALC_UNIT, 'g'); -function unit(value: string | number) { - if (typeof value === 'number') { +const unit = (value: string | number) => { + if (isNumber(value)) { return `${value}${CALC_UNIT}`; } return value; -} +}; export default class CSSCalculator extends AbstractCalculator { result: string = ''; @@ -30,8 +31,8 @@ export default class CSSCalculator extends AbstractCalculator { if (num instanceof CSSCalculator) { this.result = `(${num.result})`; - } else if (numType === 'number') { - this.result = unit(num as number); + } else if (isNumber(num)) { + this.result = unit(num); } else if (numType === 'string') { this.result = num as string; } diff --git a/src/util/index.ts b/src/util/index.ts index 648135a..5741803 100644 --- a/src/util/index.ts +++ b/src/util/index.ts @@ -155,12 +155,16 @@ export function supportLogicProps(): boolean { export const isClientSide = canUseDom(); -export function unit(num: string | number) { - if (typeof num === 'number') { +export const isNumber = (val: any): val is number => { + return typeof val === 'number' && !Number.isNaN(val); +}; + +export const unit = (num: string | number) => { + if (isNumber(num)) { return `${num}px`; } return num; -} +}; export function toStyleStr( style: string,