TypeScript - аннотация типа для модуля NodeJS

В проекте NodeJS, над которым я сейчас работаю, мы используем внедрение зависимостей, и наряду с экземплярами специально написанных классов мы использовали такие модули, как fs, crypto, http и другие, в качестве аргумента в конструктор.

Теперь мы хотели бы использовать TypeScript с библиотекой DefinitelyTyped для поддержки типов NodeJS. В случае с модулями NodeJS мне непонятно, как я могу описать определение типа для модулей в TypeScript?

Пример:

class ReportWriter {
    private fs: ???;
    constructor (fs: ???) { //what should I use instead of ???
        this.fs = fs;
    }
}

Я могу создать псевдоним типа (или, может быть, интерфейс):

type NodeFsModule = { 
    readFile: Function, 
    readFileSync: Function 
};

Но это требует от меня описания огромного количества функций. Есть ли альтернатива?


person franza    schedule 04.01.2016    source источник


Ответы (1)


Просто используйте import с typeof:

import fs = require('fs');
class ReportWriter {
    private fs: typeof fs;
    constructor (fs: typeof fs) {
        this.fs = fs;
    }
}

Подробнее здесь: https://basarat.gitbooks.io/typescript/content/docs/project/declarationspaces.html

person basarat    schedule 04.01.2016