Запятая в выражениях TypeScript JSX

Выражение в этом компоненте

const App = props => (<div>{console.log(props), JSON.stringify(props)}</div>);

результаты в

ошибка TS1005: ожидается "}"

ошибка вокруг оператора запятой. Это можно увидеть в этой демонстрации Stackblitz, которая create-react-app проект, который использует TypeScript как транспортер.

В то время как оператор запятой работает, как задумано, в Babel в аналогичной ситуации

Это неправильная реализация TypeScript или Babel JSX? Что говорится в спецификации JSX? Это известная проблема? Если это ошибка TypeScript, можно ли это исправить?

1 ответ

Решение

Можно было заставить выражение с оператором запятой работать так, как и предполагалось в реализации TypeScript и Babel JSX, с использованием дополнительных скобок:

{(console.log(props), JSON.stringify(props))}

Или если это console.log вызов, который всегда ложен, может использоваться логическое ИЛИ короткое замыкание:

{console.log(props) || JSON.stringify(props)}
Другие вопросы по тегам