Tìm kiếm trang web

javascript - TypeScript - Cách sử dụng map của mảng để tạo một Map trong ES6?


Giả sử tôi có một mảng các đối tượng khóa giá trị:

const data = [
    {key: "object1", value: "data1"},
    {key: "object2", value: "data2"},
    {key: "object3", value: "data3"},
]

const mappedData = data.map(x => [x.key, x.value]);

const ES6Map = new Map<string, string>(mappedData.values())

Làm thế nào để tôi chuyển nó sang bản đồ ES 6? Nó hoạt động trong JavaScript nhưng TypeScript sẽ báo lỗi. Ở đây tôi nhận được lỗi Argument of type 'IterableIterator<string[]>' is not assignable to parameter of type 'ReadonlyArray<[string, string]>'. Property 'length' is missing in type 'IterableIterator<string[]>'.

Câu trả lời #1

Bạn cần thực hiện type assertion và thông báo cho TypeScript rằng mappedData của bạn là kiểu Array<[string,string]> thay vì string[][], vốn là một kiểu con của Array<[any,any]> như yêu cầu của hàm khởi tạo Map.

Làm

const mappedData = data.map(x => [x.key, x.value] as [string, string]);

thay vì

const mappedData = data.map(x => [x.key, x.value]);

và cũng

bỏ cuộc gọi values() như đã được chỉ ra trong các bình luận.

Bài viết liên quan