Repository: angular/angular
File: packages/core/src/metadata/directives.ts (TypeScript)

Code before:
   * When a string is passed into the `inputs` array, it can have a format of `'name'` or
   * `'name: alias'` where `name` is the property on the class that the directive should write
   * to, while the `alias` determines the name under which the input will be available in
   * template bindings. String-based input definitions are assumed to be optional.
   *
   * @usageNotes
   *
   * The following example creates a component with two data-bound properties.
   *
   * ```ts
   * @Component({
   *   selector: 'bank-account',
   *   inputs: ['bankName', {name: 'id', alias: 'account-id'}],
   *   template: `
   *     Bank Name: {{bankName}}
   *     Account Id: {{id}}
   *   `
   * })
   * class BankAccount {
   *   bankName: string;
   *   id: string;
   * }
   * ```
   *
   * @see [Including inputs and outputs](guide/directives/directive-composition-api#including-inputs-and-outputs)
   *
   */
  inputs?: (
    | {
        name: string;
        alias?: string;
        required?: boolean;
        transform?: (value: any) => any;
      }
    | string
  )[];

  /**
   * Enumerates the set of event-bound output properties.
   *
   * When an output property emits an event, an event handler attached to that event
   * in the template is invoked.
   *
   * The `outputs` property defines a set of `directiveProperty` to `alias`
   * configuration:
   *
   * - `directiveProperty` specifies the component property that emits events.
   * - `alias` specifies the DOM property the event handler is attached to.
   *
   * @usageNotes
   *

Review comment (suggestion):
I wouldn't use/add the `@see` on non-top level symbols (eg props/methods)  since we don't display them in the docs 


Code after:
   * which the input will be available in template bindings. The `required` property indicates that
   * the input is required which will trigger a compile-time error if it isn't passed in when the
   * directive is used.
   *
   * When a string is passed into the `inputs` array, it can have a format of `'name'` or
   * `'name: alias'` where `name` is the property on the class that the directive should write
   * to, while the `alias` determines the name under which the input will be available in
   * template bindings. String-based input definitions are assumed to be optional.
   *
   * @usageNotes
   *
   * The following example creates a component with two data-bound properties.
   *
   * ```ts
   * @Component({
   *   selector: 'bank-account',
   *   inputs: ['bankName', {name: 'id', alias: 'account-id'}],
   *   template: `
   *     Bank Name: {{bankName}}
   *     Account Id: {{id}}
   *   `
   * })
   * class BankAccount {
   *   bankName: string;
   *   id: string;
   * }
   * ```
   *
   */
  inputs?: (
    | {
        name: string;
        alias?: string;
        required?: boolean;
        transform?: (value: any) => any;
      }
    | string
  )[];

  /**
   * Enumerates the set of event-bound output properties.
   *
   * When an output property emits an event, an event handler attached to that event
   * in the template is invoked.
   *
   * The `outputs` property defines a set of `directiveProperty` to `alias`
   * configuration:
   *
   * - `directiveProperty` specifies the component property that emits events.
   * - `alias` specifies the DOM property the event handler is attached to.
   *