2016-10-12 7 views
4

Я тестирую небольшой проект со стеком MEAN и машинописным текстом, и у меня, похоже, возникает проблема, связанная с Typcript не собирает пигменты для методов emit() и Array.sum().Node.js/Mongoose/MongoDb Типы дескрипторов MapReduce - emit() и Array.sum()

Вот мой код ниже ...

let options: mongoose.ModelMapReduceOption<IInvoice, any, any> = { 
    map:() => { 
     emit(this.customer, this.total); 
    }, 
    reduce: (key, values) => { 
     return Array.sum(values); 
    }, 
    out: { replace: "map_reduce_customers" }, 
    verbose: true 
}; 

Я использую типизации пакет на НОМ, и установил типизации для MongoDB, а также Mongoose пакетов в моем проекте. Есть красные squigglies под этими двумя методами, но приложение работает отлично, когда я бегу.

И да, он корректно переводится в действительный JavaScript. Я просто хотел бы знать, есть ли определение ввода, которое я пропускаю для Typcript, чтобы подобрать эти два метода?

ответ

-1

Я бы просто хотел узнать, есть ли определение ввода, которое мне не хватает для машинописного машиностроения, чтобы подобрать эти два метода?

Да, есть. Вы должны добавить ссылки на скрипты. Добавьте следующие строки в верхней части файла (просто исправить на правильные пути в вашем проекте):

///<reference path="../typings/modules/mongodb/index.d.ts" /> 
///<reference path="../typings/modules/mongoose/index.d.ts" /> 
1

Вы можете объявить функцию испускают как этот

declare function emit(k, v); 

, а затем использовать не стрелку функции (чтобы иметь возможность использовать «это» внутри функции карты)

map: function map() { 
    emit(this.customer, this.total); 
} 

Array.sum не существует в JS, насколько я знаю. Если он предоставляется библиотекой, вы можете установить типизацию для этой библиотеки.

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