2015-05-29 7 views
0

Определенный тип имеет type definition file for nodeunit.Использование модуля «nodeunit» в машинописном тексте

В нем есть

declare module 'nodeunit' { 
    export interface Test { 
    } 
} 

Как использовать это в моем коде? Кажется, что строчная орфография вызывает некоторые проблемы. не

Ни в одном из следующих работ:

/// <reference path='../nodeunit.d.ts' /> 


// cannot find name 'nodeunit' 
function testX(test: nodeunit.Test){} 

// syntax error 
function testX(test: 'nodeunit'.Test){} 

// signature with implementation cannot use string literal type 
function testX(test: 'nodeunit.Test'){} 

// cannot find name 'NodeUnit' 
function testX(test: NodeUnit.Test){} 

Первая версия может быть сделано, чтобы работать, если я просто удалить цитаты из объявления модуля: declare module nodeunit.

+1

ли включить ссылку на него, как описано в [Машинопись справочнике] (http://www.typescriptlang.org/Handbook#modules-working-with-other-javascript -libraries)? –

+0

@BlakeMumford Да, у меня есть «ссылочный путь». Это хорошо работает с другими модулями, или если я вручную изменю кавычки/обложку имени модуля в определении типа. – Thilo

+0

Как вы получили определение машинописного текста? Через tsd? Правильно ли указан путь к файлу определения? –

ответ

1

declare module 'nodeunit' Означает, что мы объявили его внешним модулем. Вы можете импортировать его с помощью:

import nodeunit = require('nodeunit'); 

И компилировать с --module commonjs.

Также в качестве наконечника вы можете увидеть примеры использований в тестовый файл для определения, в данном случае: https://github.com/borisyankov/DefinitelyTyped/blob/master/nodeunit/nodeunit-tests.ts

UPDATE

Основываясь на:

Но я не хочу для использования требуется. Файл не содержит никакой реализации, только определения типов

Я предполагаю, что вы сами объявляете внешний модуль. В этом случае вы могли бы сделать:

declare module "mine" { 
    import nodeunit = require('nodeunit'); 

    function testX(test: nodeunit.Test); 
} 
+0

Хм. Но я не хочу использовать 'require'. Файл не содержит никакой реализации, только определения типов, поэтому нет необходимости требовать его во время выполнения. – Thilo

+0

Затем выполните 'declore module" mine "{import nodeunit = require ('nodeunit')}' просто для получения информации о типе – basarat

+0

Можете ли вы привести пример использования этого «моего» модуля в моей подписи «testX»? – Thilo

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