ich eine Column
Schnittstelle haben, die Werte von Zeilen basierend auf den Tasten machen kann:Typoskript: Erzwingen konsistente Objektschlüssel als Typ-Parameter
interface Column<Row, Field extends keyof Row> {
key: Field;
render: (value: Row[Field]) => React.ReactNode;
}
Wenn ich explizit den Typ jeder Spalte, dann bekomme ich die gewünschte Verhalten. Zum Beispiel ist die folgende ungültig:
interface User {
id: number;
name: string;
}
const column: Column<User, "id"> = {
key: "id",
render(id: string) {
return id;
}
};
da die id
Eigenschaft ein String ist, keine Zahl. Gibt es eine Möglichkeit, dieses Verhalten zu erhalten, ohne den Typ jeder Spalte einzeln angeben zu müssen? Zum Beispiel werden die folgenden Typprüfungen:
const columns: Array<Column<User, keyof User>> = [
{
key: "id",
render(id: string) {
return id;
}
}
];
seit Field
zu keyof User
instanziiert wird, anstatt einem bestimmten Schlüssel.
Wie wäre es Union Typ: ID: Nummer | Schnur; werfen Sie einen Blick: https://Stackoverflow.com/questions/38628115/what-does-the-pipe-mean-in-typescript – proti
Ich bin mir nicht sicher, wie das hilft: Ich möchte, dass TypeScript nur 'id: Nummer als Argument. –
ohh, OK. Ich habe deine Frage nicht verstanden. – proti