Подтвердить что ты не робот

Назначение ключевого слова declare в TypeScript

Какова цель ключевого слова declare?

type Callback = (err: Error | String, data: Array<CalledBackData>) => void;

против.

declare type Callback = (err: Error | String, data:Array<CalledBackData>) => void;

Не удается найти документы, которые объясняют назначение ключевого слова declare в TS.

4b9b3361

Ответ 1

Первый результат, который я получаю от google, предлагает:

Ключевое слово declare используется для эмбиентных объявлений, где вы хотите определить переменную, которая, возможно, не была создана из файла TypeScript.

http://blogs.microsoft.co.il/gilf/2013/07/22/quick-tip-typescript-declare-keyword/

Ответ 2

Вот пример из реального мира.

У меня есть приложение TypeScript React, которое использует горячее промежуточное программное обеспечение Webpack. Webpack Hot Middleware написан не на TypeScript, а на старом добром JavaScript. Таким образом, он не имеет объявлений типов, с которыми может проверять компилятор машинописного текста.

Поэтому, когда я запускаю свой код, объект module из Webpack Hot Middleware существует, и я также могу его установить console.log, несмотря на то, что он является старомодным JavaScript, который скрывается где-то в моем новом модном приложении TypeScript React.

Объект module также имеет ключи, такие как 'module.hot', и ключи могут иметь значения Но компилятор времени разработки TypeScript в VSCode, по крайней мере, рисует красный волнистый текст под ним, говоря property 'hot' does not exist

но он существует, говорю я.

Чтобы согласиться с компилятором TypeScript, объявить это, как

declare let module: any

существующий объект module теперь имеет тип any, что делает компилятор TypeScript счастливым, красный исчезает, и теперь я могу продолжать компилировать и писать свой новаторский код, который изменит мир.

Кроме того, если вы удалите ключевое слово declare и просто напишите let module: any, оно не будет компилироваться, говоря, что 'module' already exists. Так что я думаю, что значит эмбиент.

Ответ 3

Ключевые слова delcare используются, когда вы импортируете какую-то библиотеку, в которой нет файлов объявлений типа, например *.d.ts

после этого vs eslint не проверяет синтаксис и контекст, позволит вам, если вы по умолчанию используете компилятор tsc, пропустить хорошую причину для объявления об ошибке синтаксиса