Sass - проверьте, какое значение имеет переменная

Предположим, что у меня есть переменная:

$var: 5px;

но где-то в коде его значение изменилось на возможный цвет, число, em, rm и т.д..

Есть ли какая-либо функция для определения того, какой тип значения у нее есть?

то есть

@if is-color($var) { //do something }

Я знаю, что в sass нет функции is-color, но есть ли другие методы для этого или функции?

Ответ 1

Из документации Sass:

type_of ($ value)

Возвращает тип значения.

Примеры:

type-of(100px)  => number
type-of(asdf)   => string
type-of("asdf") => string
type-of(true)   => bool
type-of(#fff)   => color
type-of(blue)   => color

http://sass-lang.com/documentation/Sass/Script/Functions.html#type_of-instance_method

(заметим, что - и _ взаимозаменяемы в функциях Сасса).

Ответ 2

Чтобы быть немного понятнее, вот как вы можете использовать тип:

@if type-of($my-variable) == string {
    /* do something */
}

В дополнение к типам, указанным в документах, тип-тип также вернет "карту", ​​если передан объект карты SASS:

$font-sizes: (
    small: rem-calc(18px),
    medium: rem-calc(20px),
    large: rem-calc(22px)
);

@if type-of($font-sizes) == map {
    /* do map-related thing */
} @else {
    /* do other thing */
}