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");
}
}