Typescript lodash:如何声明要与_.map一起使用的字典?

时间:2015-05-15 22:13:50

标签: typescript lodash typescript1.4

如何在lodash中声明要与_.map一起使用的字典?

以下是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 }; });
}

对于question.options的声明不满意,并给出以下错误。

类型'{[key:number]:字符串的参数; }'不能在_.map命令

中分配给'List'类型的参数

2 个答案:

答案 0 :(得分:1)

map方法在DefinitelyTyped中定义如下:

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

它要求collection参数是一个数组,它比{ [key: number]: string }更具体。您必须将options字段声明为数组,才能使其正常工作。

答案 1 :(得分:0)

问题在于lodash.d.ts并且更新它解决了这个问题。

nuget lodash.TypeScript.DefinitelyTyped version =“0.3.8”

用途

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

定义和工作。