TypeScript JSX 表达式中的逗号运算符
Comma operator in TypeScript JSX expressions
这个组件中的表达式
const App = props => (<div>{console.log(props), JSON.stringify(props)}</div>);
结果
error TS1005: '}' expected
围绕逗号运算符的错误。这可以在这个 Stackblitz demo 中看到,它是 create-react-app
使用 TypeScript 作为转译器的项目。
逗号运算符 works as intended in Babel 情况类似。
是 TypeScript 还是 Babel JSX 实现出错了? JSX 规范说了什么?这是一个已知问题吗?如果这是 TypeScript 的错,可以修复吗?
可以使带有逗号运算符的表达式在带有额外括号的 TypeScript 和 Babel JSX 实现中按预期工作:
{(console.log(props), JSON.stringify(props))}
或者如果是console.log
调用总是falsy,可以用逻辑或短路:
{console.log(props) || JSON.stringify(props)}
这个组件中的表达式
const App = props => (<div>{console.log(props), JSON.stringify(props)}</div>);
结果
error TS1005: '}' expected
围绕逗号运算符的错误。这可以在这个 Stackblitz demo 中看到,它是 create-react-app
使用 TypeScript 作为转译器的项目。
逗号运算符 works as intended in Babel 情况类似。
是 TypeScript 还是 Babel JSX 实现出错了? JSX 规范说了什么?这是一个已知问题吗?如果这是 TypeScript 的错,可以修复吗?
可以使带有逗号运算符的表达式在带有额外括号的 TypeScript 和 Babel JSX 实现中按预期工作:
{(console.log(props), JSON.stringify(props))}
或者如果是console.log
调用总是falsy,可以用逻辑或短路:
{console.log(props) || JSON.stringify(props)}