bas
bas copied to clipboard
新语言不支持boolean是设计内的么?
看到 bold 和 textShadow 这种实际是布尔值的却都是用的number类型。不引入boolean是专门的设计么?如果给出非 {0,1} 的参数是怎么判断?
大概遵照默认的“非零=true,0=false”?可能某些设置以后会引入级别(如阴影浓度)?这个设计倒是没问题,但是文档中最好给出 bool 的转换标准。
那 -1 算true?理论上既然单位是number可能还会出现NaN,这又算什么?感觉至少要定义truthy的值都有哪些,然后依然需要定义这个是Boolean context (比如JS里面-1是truthy的,但是既不==true 也不==false 所以根据实现究竟是用if(prop)还是if(prop != false)之类的,不定义这些的话behavior都是比较不确定的)
当然还有严格的输入检测的话也可以在给出非0,1值时抛出错误(然而这个也没有specify)。
另外,不在[0,1]区间的值当浓度级别也都不太有意义。依然没有解决问题。。。
所以需要确定转换行为。
关于浓度这样可分级的参数,可能也需要考虑实现来确定接受的类型。text-shadow(实际不能调整浓度,只能调整距离,囧)、伪元素、GLSL shader 的允许值都不是[0,1]的。所以也要规定……
其他的类似参数,bold 对应的 font-weight 可以做到可调,也可以统一用 font-weight: bold。借鉴过来,textShadow 如果设为 bool 也可以将 offset 值统一。
所以说这个不只是转换问题吧,现在都没定义成接受boolean类型。。。
定义成了boolean类型,还需要定义转换行为。但是现在都根本没定义成boolean,那就至少要像函数API那样,定义接受的值域(以及每个值的效果)和取值域外的值是的行为(异常/无视/未定义行为、不可预测等等)。