如何避免eslint规则不必要的三元违规:'不必要地使用条件表达式进行默认赋值'

Ant*_*ong 2 ecmascript-6 eslint eslint-config-airbnb

这是我的代码

class Message extends Component {

  render() {
    const { message, timeToRedirect } = this.props;
    const time = timeToRedirect ? timeToRedirect : TIME_TO_REDIRECT  // eslint flags this line
Run Code Online (Sandbox Code Playgroud)

我的想法是,如果参数timeToRedirect为零或未定义,我将为TIME_TO_REDIRECT变量分配一个常量time

但是,eslint将此标记为违反规则no-unneeded-ternary:"不必要地使用条件表达式进行默认分配".

我当然可以改写它

let time = timeToRedirect;
if (!timeToRedirect) {
   time = TIME_TO_REDIRECT;
 }
Run Code Online (Sandbox Code Playgroud)

但在我看来它不那么优雅.

有没有更好的方法来重写三元表达式?

我目前正在使用这些npm包

"babel-eslint": "7.1.0",
"eslint": "3.9.1",
"eslint-config-airbnb": "12.0.0",
"eslint-plugin-import": "1.16.0",
"eslint-plugin-jsx-a11y": "2.2.3",
"eslint-plugin-react": "6.5.0",
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 6

他们希望您使用OR运算符:

const time = timeToRedirect || TIME_TO_REDIRECT;
Run Code Online (Sandbox Code Playgroud)

请注意,要捕获undefined值,您还可以在解构中使用默认的intialiser:

render() {
    const { message, timeToRedirect: time = TIME_TO_REDIRECT } = this.props;
    …
Run Code Online (Sandbox Code Playgroud)