2016-11-25 7 views
0

Im, использующий TypScript с установкой requirejs, поэтому машинописный шрифт настроен на использование модулей AMD.Тип машиностроения: Тип экспортируемого класса AMD не найден

Я пытаюсь экспортировать класс и использовать его с другого. Вот пример кода.

//file: ClassA.ts 
export = class ClassA { 
} 

//file: ClassB.ts 
import ClassA = require("ClassA") 

export = class ClassB { 
    constructor(classA: ClassA) { //ClassA is not found 
     // However this will work: 
     let c = new ClassA(); 
    } 
} 

При компиляции я получаю следующее сообщение об ошибке.

ClassB.ts (4,25): ошибка TS2304: Не удается найти имя «ClassA».

Однако intellisense в порядке с instanciation ClassA, и я получаю полный intellisense для экземпляра.

Так что я делаю неправильно здесь?

EDIT: Вот мой tsconfig.json

{ 
    "compileOnSave": true, 
    "compilerOptions": { 
    "noImplicitAny": false, 
    "noEmitOnError": true, 
    "removeComments": false, 
    "sourceMap": true, 
    "target": "es5", 
    "module": "amd" 
    }, 
    "exclude": [ 
    "node_modules", 
    "wwwroot" 
    ] 
} 

ответ

1

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

ClassA.ts: 
export class ClassA { 
    print() { 
     console.log(`ClassA.print()`); 
    } 
} 

ClassB.ts: 
import {ClassA} from './ClassA'; 

class ClassB { 
    print() { 
     let a = new ClassA(); 
     a.print(); 
    } 
} 
+0

Это работало, спасибо большое! Я не знал, что вы можете использовать синтаксис модуля es6 с модулями AMD. – mode777

+0

Синтаксис модуля, который использует TypeScript, основан на es6. Компилятор позаботится о создании синтаксиса AMD или commonJs на основе настройки в tsconfig.json. – blorkfish

 Смежные вопросы

  • Нет связанных вопросов^_^