Typescript lodash: как объявить словарь для использования.карта?

как объявить словарь с _.карту в лодашь?

вот пример программы TypeScript.

<reference path="../scripts/typings/lodash/lodash.d.ts" />
interface IQuestionAndOptions {
    text: string;
    options: { [key: number]: string };
}

function sample() {
   var question: IQuestionAndOptions = { text: "Are you happy?", options: {} };
   question['1'] = "Yes";
   question['2'] = "No";

  var values =  _.map(question.options, function (v: string, k: number) {
     return { text: v, value: k }; });
}

он не доволен объявлением вопроса.параметры и дает следующую ошибку.

аргумент типа ' { [key: number]: string; }' не присваивается параметру типа 'List' на _.команда карты

2 ответов


на map метод определяется следующим образом в DefinitelyTyped:

    map<T, TResult>(
        collection: Array<T>,
        callback: ListIterator<T, TResult>,
        thisArg?: any): TResult[];

требует collection аргумент должен быть массивом, который более специфичен, чем { [key: number]: string }. Вы должны объявить options поле как массив для его работы.


этот вопрос был с лодашь.d.ts и обновление его решили проблему.

NuGet для лодашь.машинописный текст.DefinitelyTyped version= "0.3.8"

использует

map<T, TResult>(
    collection: List<T>,
    pluckValue: string): TResult[];

определение и работ.