src/language-js/print/class.js/printClassProperty
function printClassProperty(path, options, print) {
  const node = path.getValue();
  const parts = [];
  const semi = options.semi ? ";" : "";

  if (isNonEmptyArray(node.decorators)) {
    parts.push(printClassMemberDecorators(path, options, print));
  }
  if (node.accessibility) {
    parts.push(node.accessibility + " ");
  }
  if (node.declare) {
    parts.push("declare ");
  }
  if (node.static) {
    parts.push("static ");
  }
  if (node.type === "TSAbstractPropertyDefinition" || node.abstract) {
    parts.push("abstract ");
  }
  if (node.override) {
    parts.push("override ");
  }
  if (node.readonly) {
    parts.push("readonly ");
  }
  if (node.variance) {
    parts.push(print("variance"));
  }
  if (node.type === "ClassAccessorProperty") {
    parts.push("accessor ");
  }
  parts.push(
    printPropertyKey(path, options, print),
    printOptionalToken(path),
    printDefiniteToken(path),
    printTypeAnnotation(path, options, print)
  );

  return [printAssignment(path, options, print, parts, " =", "value"), semi];
}