Не совсем то, что вы просите, но конечный результат работает:
class MyClass {
public foo: MyChildClass = new MyChildClass();
}
class MyChildClass {
public bar(text: string): string{
return text;
}
}
const obj = new MyClass();
console.log(obj.foo.bar('thing'));
РЕДАКТИРОВАТЬ Я прочитал ваш ответ на мой комментарий.Я думаю, что более простой способ достижения вашей цели - использовать параметры по умолчанию, такие как:
function foo(text: string, snapshot = false): string{
if(snapshot){
return 'snapshot';
}
return text;
}
console.debug(foo('test'));
console.debug(foo('test', true));
Теперь у вашего решения есть преимущество, которое вы можете увидеть на сайте вызовов, что вы явно запрашиваете обход или снимокиз-за дополнительных имен функций.Вы можете получить аналогичный результат в машинописном тексте, заменив аргументы foo интерфейсом с необязательными свойствами.На других языках мы бы назвали эту технику именованными параметрами:
interface iFooArgs{
text: string;
bypass?: boolean;
snapshot?: boolean;
}
function foo(args: iFooArgs): string {
if(args.bypass){
return 'bypass';
}
if(args.snapshot){
return 'snapshot';
}
return args.text;
}
console.debug(foo({text: 'test'}));
console.debug(foo({text: 'bypass?', bypass: true}));
console.debug(foo({text: 'snapshot?', snapshot: true}));