TSLint не может найти настраиваемый модуль с настраиваемым файлом d.ts

Я не могу найти четкого ответа на этот вопрос, несмотря на похожие вопросы.

Я пытаюсь использовать модуль suncalc с TypeScript. У него нет собственного файла для набора текста, поэтому я создал его и поместил в свою папку для набора текста в suncalc/suncalc.d.ts

Вверху моего файла есть следующее:

/// <reference path="../typings/suncalc/suncalc.d.ts" />
"use strict";

import * as moment from "moment";
import {SunTimes} from "suncalc";
import SunCalc = require("suncalc");

Код работает нормально и работает, а валлаби прекрасно все обнаруживает. Однако TSLint (на самом деле компилятор TypeScript) в WebStorm сообщает, что не может найти модуль suncalc.

Я пробовал играть с моими tslint.json и typings.json, а также tsd.json, но не могу заставить их удалить ошибку.

Кроме того, если это связано, когда я запускаю gulp, он сообщает, что не может найти chai, it или describe через WebStorm, у TSLint нет проблем с ними.

Мне бы очень хотелось избавиться от маленькой красной волнистой линии под словом «suncalc» в моем проекте.


person Bob    schedule 09.08.2016    source источник
comment
Просто хотел упомянуть, что ошибка, которую вы видите, на самом деле является ошибкой компилятора TypeScript, а не TSLint.   -  person JKillian    schedule 09.08.2016


Ответы (1)


Очевидно вам нужно явно указывать на внешние модули. Проблема заключалась в синтаксисе моего файла d.ts.

Вам необходимо определить модуль, а не только его пространство имен, и убедиться, что имя модуля заключено в "". В моем случае мне понадобилось

declare module "suncalc" { }

вместо того

declare namespace suncalc { }
person Bob    schedule 09.08.2016