Остановить TS, включая импорт файла определения в вывод - PullRequest
0 голосов
/ 09 января 2019

У меня есть сторонняя библиотека, которая динамически загружается с ключом аутентификации.

Это довольно сложный API, поэтому я хочу, чтобы определения типов были в моем коде TypeScript.

В моем .tsconfig я использую "target": "esnext" и "module": "esnext".

С определением типа typings/third.party.d.ts У меня есть это в моем коде TS:

import * as third_party from './typings/third.party';

Проблема в том, что заканчивается выводом JS - я не хочу, чтобы это было, и не должно быть, когда исходный файл .d.ts.

Я пробовал включить расширение:

import * as third_party from './typings/third.party.d.ts';

Но это делает код ошибки TS TS2691: "Путь импорта не может заканчиваться расширением" .d.ts ". Попробуйте вместо этого импортировать" ./typings/third.party "."

Я пытался добавить:

/// <reference path="typings/third.party.d.ts" />

Вместо этого в начало файла, но тогда он вообще не найден.

Я знаю, что могу взломать это с помощью различных упаковщиков, но я не хочу зависимости - я хочу, чтобы компилятор TS принудительно использовал определение из файла .d.ts, но не пытался включить его в файл экспорта .js вообще.

Как мне это сделать?

1 Ответ

0 голосов
/ 09 января 2019

Я нашел обходной путь, но я не уверен, является ли это ошибкой, поэтому предпочел бы получить полный ответ.

Файл typings/third.party.d.ts содержит оператор export = ..., без которого он не будет работать с операторами import, однако, похоже, именно это останавливает его работу с объявлениями /// <reference path=....

Похоже, что /// <reference path=... не будет работать с чем-либо, что включает явное определение модуля по умолчанию (хотя оно может включать export module и export class).

Также похоже, что import обрабатывается как выходная зависимость, даже если файл явно .d.ts, что, я думаю, может быть ошибкой в ​​TS.

...