So schließen Sie einen Schlüssel von einer Schnittstelle in Typoskript
In Typoskript, können Sie kombinieren zwei interface-Typen, wie dieser
interface Foo {
var1: string
}
interface Bar {
var2: string
}
type Combined = Foo & Bar
Anstelle der Kombination von Tasten, ausschließen will ich die Schlüssel von einer Schnittstelle zur anderen. Gibt es trotzdem, Sie tun es in TypeScript?
Der Grund ist, ich habe eine HOC, die verwaltet, ein property-Wert für andere gewickelt Komponente wie folgt
export default function valueHOC<P> (
Comp: React.ComponentClass<P> | React.StatelessComponent<P>
): React.ComponentClass<P> {
return class WrappedComponent extends React.Component<P, State> {
render () {
return (
<Comp
{...this.props}
value={this.state.value}
/>
)
}
}
Mit, dass ich schreiben kann,
const ValuedComponent = valueHOC(MyComponent)
dann
<ValuedComponent />
aber das problem ist, dass die zurückgegebene component type auch über die Requisiten, die Art von Komponente, so Typoskript Klagen und bitten mich um die value
prop. Als Ergebnis, ich werde zu schreiben, so etwas wie
<ValuedComponent value="foo" />
Denen der Wert wird nicht verwendet, sowieso. Was ich hier will ist die Rückkehr einer Schnittstelle, ohne spezifische Tasten, ich will etwas davon haben
React.ComponentClass<P - {value: string}>
Dann die value
wird nicht erforderlich sein, in der Komponente zurückgegeben. Ist es möglich, in Maschinenschrift, für jetzt?
- Sie können überprüfen
Pick<T, K keyof T>
. Aber Sie können nicht wählen Sie die Dinge dynamisch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Maschinenschrift 2.8 Sie können nun Folgendes tun:
So, in Bezug auf Ihre Frage, das folgende könnte das sein, was Sie wollen:
Omit
code in das Beispiel vereinfachen. Ist das jetzt besser?Es ist utility-Typen Bibliothek, hat
Subtract
zugeordnete Typ:Können Sie nicht entfernen, die Eigenschaften von bereits vorhandenen Schnittstellen. Auch versucht zu erweitern, bestehende Schnittstelle mit der Schnittstelle, die
value
Eigenschaft als set optional, wird ein Fehler zurückgegeben.Um dieses Problem zu vermeiden, ändern Sie die Testungen der Ziel-Komponente, so
value
- Eigenschaft ist optional.z.B.
- und dann-Komponente erzeugt wird, wenn mit Hoher Ordnung Funktion
fragt nicht nach
value
prop.