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.
