programing

네임스페이스 선언과 모듈 선언의 차이점은 무엇입니까?

magicmemo 2023. 6. 25. 18:37
반응형

네임스페이스 선언과 모듈 선언의 차이점은 무엇입니까?

설명서와 인용문을 읽은 후:

TypeScript 1.5에서는 명명법이 변경되었습니다."내부 모듈"은 이제 "이름 공간"입니다."외부 모듈"은 이제 단순한 "모듈"입니다.

라는 인상을 받았습니다.declare module더 이상 사용되지 않으며 다음으로 대체됩니다.declare namespace하지만 탐색할 때는node_modules\@types\node\index.d.ts나는 둘 다 볼 수 있습니다.declare module그리고.declare namespace사용:

declare namespace NodeJS {
    export var Console: {
        prototype: Console;
        new(stdout: WritableStream, stderr?: WritableStream): Console;
    }
...

declare module "buffer" {
    export var INSPECT_MAX_BYTES: number;
    var BuffType: typeof Buffer;
    var SlowBuffType: typeof SlowBuffer;
    export { BuffType as Buffer, SlowBuffType as SlowBuffer };
}

왜 그럴까요? 뭐가 달라요?

외부 모듈(ES6 모듈)은 여기서 작동하지 않는 것으로 알고 있습니다.

TS에서 모듈을 지정하는 두 가지 방법이 있습니다.

declare module "buffer" {} // with quotes

그리고.

declare module buffer {} // without quotes

전자(따옴표 포함)는 외부 모듈(ES6 모듈)을 의미하며, 현재 사용되고 있습니다..d.ts여러 ES6 모듈을 하나의 파일에 저장하는 파일:

declare module "buffer" {}
declare module "fs" {}

후자(따옴표 없음)는 네임스페이스로 사용되었으며 현재 다음으로 대체되었습니다.

declare namespace buffer {}

다음 인용문에서:

TypeScript 1.5에서는 명명법이 변경되었습니다."내부 모듈"은 이제 "이름 공간"입니다."외부 모듈"은 이제 단순한 "모듈"입니다.

"내부 모듈"은 1.5 이전에 사용되었기 때문에 따옴표가 없는 모듈입니다.

자세한 내용은 이 문제를 참조하십시오.

언급URL : https://stackoverflow.com/questions/41932585/what-is-the-difference-between-declare-namespace-and-declare-module

반응형