title: Typescript / Eslint rules to catch PII being logged?
body: <p>I've been looking for a way to catch potential PII logging violations using linting rules. Specifically, if I have an object that contains PII, I'd like to mark the fields that are expected to contain PII so it doesn't inadvertently get logged, i.e. avoid a situation as follows:</p>
  <pre><code>interface Member {
    id: string,
    email: string,
    // other non-pii fields
  }
  ....
  const m: Member = getMemberFromRequest(request);
  ....
  if (condition) {
    logger.info(`No fluffy bunnies found for ${m.email}`);
  }
  
  </code></pre>
  <p>My first thought would be to add some sort of annotation on the object property (e.g. <code>@PII</code>), then write linter rules to make sure that the specific property isn't used as part of a string literal somewhere. So far, I've only come across a PII linter that looks through comments or string literals (<code>eslint-plugin-pii</code>).</p>
  <p>With typescript, I <em>guess</em> another possibility would be to declare a type alias for <code>string</code> and have a tslint rule to catch that <em>type</em> from being used in logs.</p>
  <p>Are either of these workable (or good) approaches? Are there better alternatives that I haven't found?</p>