TypeScript проблема с импортом объявлений
У меня возникла проблема с импортом объявлений из расширенного файла (я использую this для ввода). Согласно пример, я должен поместить это в свой код:
import * as SockJS from 'sockjs-client';
import BaseEvent = __SockJSClient.BaseEvent;
import SockJSClass = __SockJSClient.SockJSClass;
Однако, когда я пытаюсь сделать это следующим образом:
module Test {
import * as SockJS from 'sockjs-client';
import BaseEvent = __SockJSClient.BaseEvent;
import SockJSClass = __SockJSClient.SockJSClass;
export class Example {
constructor() {......
}}}
Я получаю следующую ошибку от компилятора:
error TS1147: Import declarations in a namespace cannot reference a module.
Я что-то делаю неправильно? Или есть ли проблема с типизацией?
Спасибо
uksz
Ответы
Ответ 1
Вы должны использовать свои операторы импорта вне своего модуля
import * as SockJS from 'sockjs-client';
import BaseEvent = __SockJSClient.BaseEvent;
import SockJSClass = __SockJSClient.SockJSClass;
module Test {
export class Example {
constructor(){}
}
}
Ответ 2
Я полагаю, что это связано с набором параметров модуля typescript.
В вашем классе используются внутренние модули, а в файле ввода используются внешние модули.
См. Раздел Работа с другими разделами JavaScript здесь: http://www.typescriptlang.org/docs/handbook/modules.html
Ответ 3
Я столкнулся с такой же проблемой при попытке импортировать moment.d.ts
определения типа moment.d.ts
в один из файлов типа.
Я также обертываю весь свой класс внутри module
. Решение, которое я сделал для решения проблемы, было в моем файле машинописных файлов - Scheduler.ts
, я поместил строку import * as moment from "../definitions/moment/moment";
непосредственно перед объявлением module
(см. изображение ниже).
Я не включил все определение класса для краткости.
![enter image description here]()
Как вы можете видеть, у меня есть reference path
явно определяемый в файле машинописных файлов для внешних библиотек (jquery
, kendo ui
и moment
).
Структура папок, в которой сохраняются определения типов.
![enter image description here]()
Ниже также мой tsconfig.json
, не совсем уверен, что это allowSyntheticDefaultImports: true
легкость проблемы. Я просто следил за заметками, написанными на этой ссылке, при импорте и использовании в файле машинописных файлов.
{
"compileOnSave": true,
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": true,
"target": "es5",
"module": "commonjs",
"strictNullChecks": false,
"allowSyntheticDefaultImports": true
}
}