flowType для деструктуризации параметров функции со значениями по умолчанию

1

У нас есть обходное решение в этой ситуации, которое не нарушает проверку типа?

// Error
function foo({name = 42}: {name: ?number}) {
  //          ^ null or undefined [1] is incompatible with number [2].
  console.log(name);
}

Решение из ошибки предотвращает поток от проверки типа значения по умолчанию.

// Correct
const foo = ({name = true}: $Subtype<{name: ?string}>) => {
  //                 ^ flow does not check this
  console.log(name);
}
Теги:
flowtype

2 ответа

0
Лучший ответ

У нас есть старая база кода для добавления типов, поэтому мы не хотим менять функциональность.

Аргумент destructuring в теле вместо заголовка - отлично работает для меня.

function foo(arg: {name: ?number}) {
  const { name = 42 } = arg;
  // the default value is only used for undefined values.
  console.log((name: (number | null)));
}
0

Единственным обходным решением, которое также поддерживает безопасность типов, является не использование деструктурирования:

function foo(props: {name: ?number}) {
    let name = props.name === undefined ? 41 : props.name;
    console.log(name);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню