Je suis confus sur la manière dont les interfaces fonctionnent dans Thypothingscript.
Voici une partie de code: p> Il ne compilera pas et ne donnera pas l'erreur "Propriété FOO n'existe pas sur Type Test1. Cela signifie donc que lorsque vous implémentez une interface dans TypeScript, vous ne pouvez utiliser que les propriétés et les méthodes déclarées dans l'interface? P> Je suis confus parce que je suis habitué à PHP et cela ne provoquera aucune erreur dans PHP. P> p>
3 Réponses :
let test: test2 = new test2(); test.foo = 'test';
Cela compilerait effectivement, mais je souhaite utiliser une interface afin que je puisse avoir plusieurs classes passer le même type de type comme paramètre d'une fonction. Voici ma mise en œuvre concrète: Let Block: Blockinterface = nouveau questionnaire (); Fonction de fonctionnement (bloc: blockinterface) {....}
Cela signifie donc que lorsque vous implémentez une interface dans TypeScript, vous ne pouvez utiliser que les propriétés et les méthodes déclarées dans l'interface? P> blockQuote>
non. Cela signifie que lorsque vous
Référence une variable avec une interface spécifique forte> dans TypeScript, vous ne pouvez utiliser que les propriétés et les méthodes déclarées dans l'interface de la variable. P> Et c'est le concept général dans OOP. P>
Ok, je l'obtiens et en pensant plus à ce sujet, cela a du sens, mais j'ai été confus car cela ne causera pas d'erreur dans PHP, alors je voulais savoir s'il s'agissait du comportement de PHP qui était anormal ou dossier, j'ai ma réponse maintenant.
pense à 2 choses ici
interface test1 { }
class test2 implements test1{
public foo;
}
let test: test1 | any = new test2();
test.foo = 'test';
Comme Zmag l'a dit, c'est l'idée générale dans OOP. (Vous pouvez lire sur la covariance et la contrevariance, c'est intéressant;))