Skip to content

no-public-class-fields

recommended を使用した場合、このルールが有効になります。

このルールは、クラスのpublic変数にクラスを使用することを禁止します。
(このルールは Construct または Stack を継承したクラスにのみ適用されます)

public変数でクラス型を使用すると、密結合が作成され、可変状態が公開されるため、推奨されません。

✅ 正しい例

ts
import { Construct } from "constructs";
import { IBucket, Bucket } from "aws-cdk-lib/aws-s3";

class MyConstruct extends Construct {
  // ✅ interface のフィールドは使用できます
  public readonly bucket: IBucket;

  constructor(scope: Construct, id: string) {
    super(scope, id);
    this.bucket = new Bucket(this, "MyBucket");
  }
}

❌ 不正な例

ts
import { Construct } from "constructs";
import { Bucket } from "aws-cdk-lib/aws-s3";

class MyConstruct extends Construct {
  // ❌ class のフィールドは使用すべきではありません
  public readonly bucket: Bucket;

  constructor(scope: Construct, id: string) {
    super(scope, id);
    this.bucket = new Bucket(this, "MyBucket");
  }
}