Skip to content

no-construct-in-interface

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

このルールは、interface のプロパティに CDK Construct 型 (例: Bucket) を指定することを禁止します。

interface のプロパティに Construct 型を使用すると、interface と Construct の間に密接な結合が作成されます。
さらに、Construct は本質的に変更可能であるため、interface のプロパティに Construct 型を指定すると、予期しない動作が発生する可能性があります。
したがって、このようなコードは推奨されません。

代わりに、読み取り専用リソースのための interface (例: IBucket) を指定することが推奨されます


🔧 使用方法

ts
// eslint.config.mjs
export default [
  {
    // ... some configs
    rules: {
      "cdk/no-construct-in-interface": "error",
    },
  },
];

✅ 正しい例

ts
import { IBucket } from "aws-cdk-lib/aws-s3";

interface MyConstructProps {
  // ✅ 読み取り専用の interface (`IBucket` など) は使用できます
  readonly bucket: IBucket;
}

❌ 不正な例

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

interface MyConstructProps {
  // ❌ Construct 型 (`Bucket` など) のプロパティは使用すべきではありません
  readonly bucket: Bucket;
}