.d.ts не компилируется после TypeScript 2.6.1

Вопрос:

Я использовал TypeScript версии 2.5 с этим suncalc модулем для пакета suncalc:

// Note: incomplete
// https://www.npmjs.com/package/suncalc

declare module "suncalc" {
interface suncalcResult {
solarNoon: Date;
nadir: Date;
sunrise: Date;
sunset: Date;
sunriseEnd: Date;
sunsetStart: Date;
dawn: Date;
dusk: Date;
nauticalDawn: Date;
nauticalDusk: Date;
nightEnd: Date;
night: Date;
goldenHourEnd: Date;
goldenHour: Date;
}

function sunCalc(date: Date, latitude: number, longitude: number): suncalcResult;

export = { // BLAMING HERE <--------------------------- line 24
getTimes: sunCalc
};
}

В TypeScript 2.5 я получил этот файл suncalc.d.ts и скомпилирован без ошибок. Когда я обновился до 2.6, он начал винить:

message: 'The expression of an export assignment must be an identifier or qualified name in an ambient context.'
at: '24,12'
source: 'ts'

Тем не менее, в списке изменений TypeScript ничего не происходит об изменениях в окружающих модулях.

Почему сейчас не компилируется? Как написать экспорт в TS2.6?

Лучший ответ:

Это упоминается на странице изменений. Экспортные присвоения, такие как тот, о котором идет речь, являются исполняемым кодом, а 2.6.1 более строго соблюдаются в соответствии с общим правилом, что исполняемый код не разрешен в файлах декларации.

Предлагаемый способ переписать объявление — объявить переменную с явным типом и экспортировать переменную:

const _exported: { getTimes: sunCalc };
export = _exported;

Оцените статью
TechArks.Ru
Добавить комментарий