<%- await include("../../common-head.ejs.html") %> <%- await include("../blog-head.ejs.html") %> <% function callsToAction() { %> <% } %>
<%- await include("../../common-nav.ejs.html") %>

<%= meta.title %>

@@@ <%- callsToAction() %>

How does quick-lint-js compare to ESLint? See for yourself:

TypeScript
const trimArg = <T>(fn: (a: T) => boolean) => {
  return (arg1: any, arg2: T) => {
    return fn(arg2);
  };
};

Cannot find name 'T'. (2304)
JSX element 'T' has no corresponding closing tag. (17008)
Unexpected token. Did you mean `{'>'}` or `&gt;`? (1382)
Unexpected token. Did you mean `{'>'}` or `&gt;`? (1382)
Expression expected. (1109)
Unexpected token. Did you mean `{'>'}` or `&gt;`? (1382)
Expression expected. (1109)
Unexpected token. Did you mean `{'}'}` or `&rbrace;`? (1381)
Unexpected token. Did you mean `{'}'}` or `&rbrace;`? (1381)
'</' expected. (1005)

quick-lint-js
const trimArg = <T>(fn: (a: T) => boolean) => {
  return (arg1: any, arg2: T) => {
    return fn(arg2);
  };
};

generic arrow function needs ',' here in TSX [E0285]

TypeScript
export function Spacer() {
  return
    <EuiSpacer size="xs" />
    <EuiHorizontalRule margin="none" />
    <EuiSpacer size="xs" />
}

Unreachable code detected. (7027)
JSX expressions must have one parent element. (2657)

quick-lint-js
export function Spacer() {
  return
    <EuiSpacer size="xs" />
    <EuiHorizontalRule margin="none" />
    <EuiSpacer size="xs" />
}

return statement returns nothing (undefined) [E0179]
missing '<>' and '</>' to enclose multiple children [E0189]

TypeScript
it('matches on the first word', await () => {
  await table.searchForItemWithName('Hello');
  await table.expectItemsCount('visualize', 1);
});

Expression expected. (1109)
',' expected. (1005)
':' expected. (1005)
',' expected. (1005)
':' expected. (1005)
',' expected. (1005)

quick-lint-js
it('matches on the first word', await () => {
  await table.searchForItemWithName('Hello');
  await table.expectItemsCount('visualize', 1);
});

'await' cannot be followed by an arrow function; use 'async' instead [E0178]

ESLint
function TodoEntry({title, children}) {
  return (
    <h3>{title}</h3>
    <div className="body">{children}</div>
  );
}

Adjacent JSX elements must be wrapped in an enclosing tag

quick-lint-js
function TodoEntry({title, children}) {
  return (
    <h3>{title}</h3>
    <div className="body">{children}</div>
  );
}

missing '<>' and '</>' to enclose multiple children;
children end here [E0189]

What should we work on next? Suggest features for quick-lint-js.

quick-lint-js version 3.0 has over @@@ patches since version 2.0. @@@ people made quick-lint-js possible.

<%- callsToAction() %>

Written by strager, lead developer of quick-lint-js.