2017-12-21 4 views
1

Nach Aktualisierung von Typoskript von 2.3 auf 2.6, sehe ich diesen Fehler in mehreren meiner Typings. Was bedeutet es eigentlich? Kannst du mir ein Beispiel geben ?Was bedeutet "Typ A hat keine Eigenschaften mit Typ B gemeinsam?"

EDIT: Ich verstehe, dass diese Nachricht eine fehlerhafte Schnittstelle Erweiterung/Implementierung anzeigt. Ich bin interessanter im Sinne von no properties in common. Die vorgeschlagene Frage zeigt ein Beispiel für eine Klasse, die eine Schnittstelle implementiert. Was ich gesehen habe, ist eine Schnittstelle, die eine andere Schnittstelle erweitert und den Typ einer der Eigenschaften ändert. Was hat es mit der Nachricht zu tun?

+0

Mögliche Duplikat [Typ ‚X‘ hat keine Eigenschaften in gemeinsam mit Typ 'Y'] (https://stackoverflow.com/questions/46449237/type-x-has-no-properties-in-common-with-type-y) – Pac0

Antwort

3

TypScript 2.4 eingeführt stärkere Überprüfung von schwachen Typen, z. eine Schnittstelle, bei der alle Eigenschaften optional sind.

Angenommen, wir haben zwei schwache Typen mit unterschiedlichen Eigenschaften:

interface A { 
    a?: string; 
} 

interface B { 
    b?: string; 
} 

let x: A = {}; 
let y: B = {}; 

Beachten Sie, dass beide x und y leere Objekte, die ihre jeweiligen schwachen Typen A und B befriedigen.

Ist es nun ein Fehler, einen A einem B zuzuweisen?

y = x; 

Typoskript 2.4+ sagt ja, das ist ein Irrtum:

Type 'A' has no properties in common with type 'B'. 

Dies ist ein vereinfachtes Beispiel; Ihre Typisierungsdatei ist sicherlich komplexer, aber ich hoffe, dies veranschaulicht die Absicht des Fehlers. Wenn Sie etwas Code veröffentlichen, können wir uns weiter damit beschäftigen.

Wenn Typoskript schwache Typprüfung wird übervorsichtig in Ihrem Fall ist, gibt es Workarounds wie Gießen oder einen Index Signatur:

https://blog.mariusschulz.com/2017/12/01/typescript-2-4-weak-type-detection

Verwandte Themen