2015-05-15 28 views
6

Làm thế nào để khai báo một từ điển để sử dụng với _.map trong lodash?Lodash Typescript: Làm thế nào để khai báo một từ điển để sử dụng với _.map?

Đây là chương trình TypeScript mẫu.

<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 }; }); 
} 

Không hài lòng với việc khai báo câu hỏi.chuyển đến và đưa ra lỗi sau.

Đối số của loại '{[key: number]: string; }' Là không thể chuyển nhượng để tham số có kiểu 'Danh sách' ở lệnh _.map

Trả lời

0

Sự cố xảy ra với lodash.d.ts và việc cập nhật giải quyết sự cố.

NuGet lodash.TypeScript.DefinitelyTyped version = "0.3.8"

sử dụng

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

định nghĩa và các công trình.

0

Phương pháp map được định nghĩa như sau trong DefinitelyTyped:

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

Nó đòi hỏi sự lập luận collection là một mảng, cụ thể hơn { [key: number]: string }. Bạn phải khai báo trường options làm mảng để nó hoạt động.

Các vấn đề liên quan