Интерфейсы служат гарантией того, что класс реализует все прописанные в нем методы, свойства.
Выходит интерфейсы удобно и нужно использовать как тип параметра в функциях/методах.
Но я запутался, у меня this класса реализующий интерфейс не может быть назначен интерфейсу, вот пример:
typescript
interface INode {
value: any;
left: INode | null;
right: INode | null;
parent: INode | null;
setRight(node: INode): void;
setLeft(node: INode): void;
setParent(node: INode): void;
}
class TreeNode implements INode {
left: this | null = null;
right: this | null = null;
parent: this | null = null;
constructor(public value: any) {}
setLeft(node: this | null): void { // ERROR
this.left = node;
}
setRight(node: this | null): void { // ERROR
this.right = node;
}
setParent(node: this | null): void { // ERROR
this.parent = node;
}
}
Error: Property 'setLeft' in type 'TreeNode' is not assignable to the same property in base type 'INode'
и тп
Почему?
ведь TreeNode реализует интерфейс INode, я все еще не могу понять