如何在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'类型的参数答案 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[];
定义和工作。