C'est drôle j'ai passer la journée à enquêter sur la possibilité de résoudre le même cas.
J'ai trouvé qu'il pas possible de faire de cette façon:
// a.ts - module
export interface A {
x: string | any;
}
// b.ts - module
import {A} from './a';
type SomeOtherType = {
coolStuff: number
}
interface B extends A {
x: SomeOtherType;
}
Provoquer Un module ne peuvent pas connaître tous les types disponibles dans votre application. Et c'est assez ennuyeux port de tout, de partout et de faire un code comme ceci.
export interface A {
x: A | B | C | D ... Million Types Later
}
Vous devez définir le type plus tard la saisie semi-automatique fonctionne bien.
De sorte que vous pouvez tricher un peu:
// a.ts - module
export interface A {
x: string;
}
Gauche certains type par défaut, qui permettent la saisie semi-automatique, où les remplace pas nécessaire.
Alors
// b.ts - module
import {A} from './a';
type SomeOtherType = {
coolStuff: number
}
// @ts-ignore
interface B extends A {
x: SomeOtherType;
}
Désactiver stupide exception ici à l'aide de @ts-ignore
drapeau, en disant: nous le faisons-nous quelque chose de mal. Et drôle de chose que tout fonctionne comme prévu.
Dans mon cas, je suis réduisant le champ de vision de type x
, sa me permet de faire du code plus suspectés. Par exemple, vous avez liste de 100 propriétés, et vous réduire à 10, afin d'éviter des situations stupides