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

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

4b9b3361

Ответ 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
  }
}