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

기본값: 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

기본값: 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 파일 내부의 모든 내용

사용 방법

구성 파일이나 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용하세요:

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

참고 자료