TypeScriptのタイプチェックシステムではまだ苦労しています。共通の基底クラスから派生した要素の集合を保持する複合体を考えてみましょう。再帰的に階層を上って、指定された型の最初のオーケストを返す関数を実装するにはどうすればよいですか?任意の助けを事前にタイプのチェックイン階層:getParentOfType()
abstract class Employee
{
public Superior: Employee;
/** THIS IS NOT WORKING */
public getSuperiorOfType<T extends Employee>(type: typeof T): T
{
if (this instanceof T) return this;
else if (this.Superior !== undefined) return this.getSuperiorOfType(type);
}
}
class Manager extends Employee {}
class TeamLead extends Employee {}
class Developer extends Employee {}
let tom = new Manager();
let suzanne = new TeamLead();
let ben = new Developer();
ben.Superior = suzanne;
suzanne.Superior = tom;
let x = ben.getSuperiorOfType(Manager); // x = tom
おかげで...