Skip to content
← Back to rules

typescript/no-namespace 制限

何をするか

TypeScript のネームスペースを禁止します。

なぜ悪いのか

タイプスクリプトでは、かつて「カスタムモジュール」と呼ばれるコード構造(module Example {})が許可されていました。その後、「ネームスペース」(namespace Example)に名称変更されました。しかし、ネームスペースは古いコード組織の方法であり、現在は ES2015 モジュール構文(import/export)が推奨されています。

このルールに対して 不正 なコードの例:

typescript
module foo {}
namespace foo {}
declare module foo {}
declare namespace foo {}

このルールに対して 正しい コードの例:

typescript
declare module "foo" {}
// d.ts ファイル内にあるすべての内容

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。

allowDeclarations

type: boolean

default: false

カスタム TypeScript ネームスペースと declare を許可するかどうか。

{ "allowDeclarations": true } の場合、このルールに対する 不正 なコードの例:

typescript
module foo {}
namespace foo {}

{ "allowDeclarations": true } の場合、このルールに対する 正しい コードの例:

typescript
declare module "foo" {}
declare module foo {}
declare namespace foo {}

declare global {
  namespace foo {}
}

declare module foo {
  namespace foo {}
}

{ "allowDeclarations": false } の場合、このルールに対する 不正 なコードの例:

typescript
module foo {}
namespace foo {}
declare module foo {}
declare namespace foo {}

{ "allowDeclarations": false } の場合、このルールに対する 正しい コードの例:

typescript
declare module "foo" {}

allowDefinitionFiles

type: boolean

default: true

{ "allowDefinitionFiles": true } の場合、このルールに対する 不正 なコードの例:

typescript
// d.ts ファイル外の場合
module foo {}
namespace foo {}

// d.ts ファイル外の場合
module foo {}
namespace foo {}
declare module foo {}
declare namespace foo {}

{ "allowDefinitionFiles": true } の場合、このルールに対する 正しい コードの例:

typescript
declare module "foo" {}
// d.ts ファイル内にあるすべての内容

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、次のように使用できます:

json
{
  "rules": {
    "typescript/no-namespace": "error"
  }
}
bash
oxlint --deny typescript/no-namespace

参照