2015-06-27 2 views
0

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

Пример:

Test.d .ts

interface TestConstructor { 
    new(value?: any): void; 
    ... 
} 

interface Test { 
    ... 
} 

declare var Test: TestConstructor; 

Test.ts

var Test = (function() { 
    function Test(value) { 
    } 

    return Test; 
})(); 

Ошибка:

Subsequent variable declarations must have the same type. Variable 'Test' must be of type 'TestConstructor', but here has type '(value: any) => void'.

Я знаю, что это, кажется, странный способ использования машинописи, но причина в том, что я хочу, чтобы создать объект с функциями, которые машинопись не поддерживают (замыкания/value), поэтому я не могу использовать для этого классы.

Кроме того, я хочу, чтобы отправить Test.d.ts и Test.js, но не Test.ts

ответ

2

Ваш код не указывает, что Test.ts потребности ссылаться Test.d.ts, поэтому просто скомпилировать Test.ts сам по себе

tsc Test.ts

вместо

tsc Test.ts Test.d.ts

+0

Может это делается из визуальной студии? – series0ne

+0

Я не использовал Visual Studio в то время, поэтому могут быть лучшие способы, чем эти. У вас могут быть файлы в отдельных проектах. Вы также можете изменить свойство Build Action для Test.d.ts на None, но тогда, если этот файл содержит ошибки, компилятор их не поймает. – curpa

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