2016-02-26 3 views
1

Код компилируется и запускается, но я получаю ошибки с проверкой типов, которая взрывается большим количеством файлов и переменных. Вот пример.Не удается найти имя модуля в том же каталоге

Test1.ts

import Test2 = require('./Test2'); 

class Test1 { 
    test2: Test2; 
    constructor() { 
     this.test2 = new Test2(); 
    } 
} 

console.log(new Test1()); 

Test2.ts

export = class Test2 { 
    prop: number; 
    constructor() { 
     this.prop = 5; 
    } 
} 

Запуск tsc --module commonjs Test1.ts дает мне эту ошибку:

Test1.ts(4,12): error TS2304: Cannot find name 'Test2'. 

и запуск кода выхода:

Test1 { test2: Test2 { prop: 5 } } 

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

ответ

1

Не использовать export =/import = синтаксис. Его лучше сделать это следующим образом:

Test1.ts

import {Test2} from './Test2'; 

class Test1 
{ 
    test2: Test2; 
    constructor() { 
     this.test2 = new Test2(); 
    } 
} 

console.log(new Test1()); 

Test2.ts

export class Test2 
{ 
    prop: number; 
    constructor() 
    { 
     this.prop = 5; 
    } 
} 
+0

Интересно .... это работает. Почему это лучше? Я счастлив, что это работает, но мне любопытно, почему другой не был. – adamk33n3r

+0

Недостаток, который я обнаружил в этом, заключается в том, что он требует, чтобы скомпилированные файлы были отвратительны от ванильного javascript, так как вам нужно пройти через пространство имен, например 'var Test1 = require ('./ Test1'). Test1' – adamk33n3r

+0

код, придерживаясь оригинального wy, я бы установил экспорт следующим образом: export = Test2; Посмотрите на некоторые полезные объяснения здесь: http://stackoverflow.com/questions/35455720/proper-explanation-for-nodejs-typescript-export-import – Amid

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