prosource

export declare class Actions에서 declare는 무엇을 합니까?

probook 2023. 2. 12. 18:02
반응형

export declare class Actions에서 declare는 무엇을 합니까?

ㅇㅇㅇㅇ가 하죠?declare★★★★★★★★★★★★★★★★★★?

export declare class Actions {
    ...
}

찾고 있던 것을 찾았습니다.

선언 vs. 변수

var는 새 변수를 만듭니다. declare변수가 다른 곳에 작성되었음을 TypeScript에 알리기 위해 사용합니다.「 」를 사용하고 declare자바스크립트이것은 컴파일러에 대한 힌트일 뿐입니다.

를 들어, 「」를 정의하는 .var externalModule , 을합니다.declare var externalModule에 TypeScript가 있음을 externalModule되어 있습니다.

이것을 이해하려면 , 우선 「declare」키워드를 이해할 필요가 있습니다.

다음은 Gil Fink의 블로그에서 설명하는 좋은 내용입니다.

TypeScript declare 키워드는 TypeScript 파일에서 생성되지 않았을 수 있는 변수를 선언하기 위해 사용합니다.

예를 들어 TypeScript 선언 파일이 없고 글로벌 네임스페이스에 myLibrary라는 이름 공간이 있는 myLibrary라는 라이브러리가 있다고 가정합니다.이 라이브러리를 TypeScript 코드로 사용하려면 다음 코드를 사용할 수 있습니다.

declare var myLibrary;

TypeScript 런타임에서 myLibrary 변수에 부여하는 유형은 any 유형입니다.여기서의 문제는 디자인 타임의 변수에는 인텔리센스가 없지만 코드로 라이브러리를 사용할 수 있다는 것입니다.declare 키워드를 사용하지 않고 동일한 동작을 하는 또 다른 옵션은 다음과 같은 유형의 변수만 사용하는 것입니다.

var myLibrary: any;

두 코드 예제 모두 동일한 JavaScript 출력을 생성하지만 선언 예제는 읽기 쉽고 주변 선언을 나타냅니다.


따라서 "declare" 키워드를 이해한 후 검색어를 찾을 수 있는 곳으로 돌아가십시오.

export declare class Action{
...
}

클래스의 실제 실장은 아마 다른 장소에 있을 것입니다.아마 .js 파일일 겁니다.

declare다음 중 하나:

declaretypescript 키워드는 선언이 다른 곳(외부 Javascript 파일 또는 런타임 환경의 일부에 작성됨)에서 정의되었음을 타이프스크립트 컴파일러에 알릴 때 유용합니다.

다른 곳에 foo라는 변수가 있다고 칩시다.그런 다음 변수를 참조하려고 하면 타이프스크립트 컴파일러가 오류를 발생시킵니다.

foo = 'random'; // Error: 'foo' is not defined

는 「 」를 할 수 .declare★★★★★★★★★★★★★★★★★★:

declare var foo: string;
foo = 'random';  // no error anymore

이로 인해 다음과 같은 결과가 발생합니다.

  • foo실제로 다른 곳에서는 선언되지 않았으며 런타임 오류가 발생할 수 있는 변수를 사용하려고 합니다. '우리'만.declare키워드를 지정합니다.
  • 타입을 알고 있기 때문에, (잠재적으로는) IDE Intellisense에 액세스 할 수 있습니다.
  • 타입을 알고 있기 때문에 타입스크립트 컴파일러는 컴파일 시에 타입을 체크할 수 있어 특정 시나리오에서 잘못된 타입을 사용하고 있는지 여부를 경고할 수 있습니다.

이 경우 declare 키워드는 다음과 같습니다.

export declare class Actions {
    ...
}

...는 쓸모가 없는 것 같습니다만, TypeScript는 이것을 에러로 하는 것을 검토해야 한다고 생각합니다(숨겨진 이유가 있는지는 모르겠습니다).클래스를 선언하면 가져올 필요가 없습니다.다른 사용자가 가져올 것으로 예상하여 클래스를 내보내는 경우 선언할 필요가 없습니다.또한 이 클래스를 선언하기 때문에 이 클래스를 가져올 필요 없이 사용할 수 있어야 합니다.그러나 클래스 선언을 내보낼 때는 그렇지 않습니다.사용하려면 Import해야 합니다.

TL;DR

export declare class Actions {
    ...
}

와 같다

declare class Actions {
    ...
}

declare 키워드 키워드 없음 - 에 의해 으로 선택되는 선언 모듈(TypeScript 에 Import " export " - TypeScript " 。이것은 레거시 모듈(TypeScript 정의 없이 설치된 npm 패키지)에 입력을 추가하는 데 유용한 기능입니다.

importexport모듈을 올바르게 사용하는 방법이며, 모든 것을 수동으로 Import(좀 지루하게 느껴집니다)해야 합니다.논리든 정의든 어느 쪽이든 상관없습니다.

사례로 【적인용활 as as as】export declare를 사용하면 모든 서브패킷을 내보내지 않아도 됩니다.하다

export declare namespace Redux {
    namespace Store {
        interface Definition { ... }
    }
}

다음 중 어느 쪽이 읽기 쉬울 수 있습니까?

export namespace Redux {
    export namespace Store {
        export interface Definition { ... }
    }
}

는 두 Import).import { Redux } from 'definitions/redux';

때 할 점은, 이 항목을 하는 것입니다.import ★★★★★★★★★★★★★★★★★」export에, 「모듈」이 됩니다.declare을 사용하다

PS, 버그가 있습니다(문제 16671).const enum에 대해 에서 (redex type)를 했습니다.transpileOnlyflag(create-react-app-typescript 패키지가 하는 것, 그래서 알고 있습니다), 열거형은 인라인으로 표시되지 않습니다!뛰어들 수도 있고 아닐 수도 있지만 미리 알아두면 도움이 됩니다!

언급URL : https://stackoverflow.com/questions/35019987/what-does-declare-do-in-export-declare-class-actions

반응형