我有一個Column
接口,可以使基於該鍵的行值:如果我明確地設置每個列的類型打字稿:執行一致的對象鍵類型參數
interface Column<Row, Field extends keyof Row> {
key: Field;
render: (value: Row[Field]) => React.ReactNode;
}
,然後我得到了想要的行爲。例如,以下是無效的:
interface User {
id: number;
name: string;
}
const column: Column<User, "id"> = {
key: "id",
render(id: string) {
return id;
}
};
因爲id
屬性是一個字符串,而不是數字。有沒有辦法獲得這種行爲,而不必單獨指定每個列的類型?例如,以下類型的檢查:
const columns: Array<Column<User, keyof User>> = [
{
key: "id",
render(id: string) {
return id;
}
}
];
因爲Field
被實例化到keyof User
,而不是一個特定的鍵。
工會類型如何: id:number |串; 看看: https://stackoverflow.com/questions/38628115/what-does-the-pipe-mean-in-typescript – proti
我不知道這有什麼幫助:我希望TypeScript只允許'ID:數字「作爲參數。 –
哦,好的。雖然不理解你的問題。 – proti