Tìm kiếm trang web

TypeScript - làm thế nào để định nghĩa một kiểu bên trong tuple dựa trên sự kết hợp của một generic + một giá trị khác của tuple? (ví dụ như tuple[1]: T[tuple[0]])


Như tiêu đề: làm thế nào để định nghĩa một kiểu, dựa trên sự kết hợp của một generic + một giá trị khác, trong một tuple, giống như tuple[1]: T[tuple[0]]?

Bối cảnh:

Tôi đang sử dụng một bộ giá trị để lưu trữ các giá trị khác nhau, nhằm sau đó tạo một bảng.

Tôi có một mảng các hàng thuộc một loại nhất định (ví dụ: MyDataDTO) chứa tất cả các thuộc tính khác nhau của một hàng.

Bộ giá trị xác định một cột đơn của bảng. Định nghĩa đầy đủ của bảng sẽ là một mảng gồm các bộ giá trị này.

Bộ giá trị có 2 giá trị:

[0] -> trường của cột, chỉ có thể là một trong các khóa của MyDataDTO (không có vấn đề gì ở đây)

[1] -> một hàm nhận giá trị của ô làm tham số (đây là vấn đề) và hiển thị nó.

Đây là những gì tôi đã thử:

type ColumnDefinitionTuple<TRowData> = {
    [K in keyof TRowData]: [K, (cellValue: TRowData[K]) => string];
}[keyof TRowData];

type MyDataDTO = {
    id: number;
    name: string;
    code: number;
};

const tableData: MyDataDTO[] = [
    { id: 1, name: "test-1", code: 101 },
    { id: 2, name: "test-2", code: 102 },
    { id: 3, name: "test-3", code: 103 },
];

const tableColumnsDefinition: ColumnDefinitionTuple<MyDataDTO> = [
    "id", // OK -> works with type-safety and autocomplete
    (value) => "", // NOT OK -> the "value" parameter is typed as "any", it should be typed as "number" because MyDataDTO["id"] (TRowData[K]) is a number
];

Có ai biết giải pháp cho việc này không?

Cảm ơn!