是否可以使变量baz动态具有字符串类型?
type exampleType = () => ReturnType<exampleType>; // I need to return the type of any function I pass (Eg. ReturnType<typeof foo>)
interface IExampleInterface {
bar: exampleType;
}
function foo(): string {
return 'AAAAAAA';
}
const foobar = {
bar: foo,
} as IExampleInterface;
const baz = foobar.bar();
baz; // Baz has type "any"
答案 0 :(得分:2)
我不清楚接口的目标是什么。这是我能得到的最接近我想要的东西的
interface IExampleInterface<T extends () => any> {
bar: () => ReturnType<T>;
}
function foo(): string {
return 'AAAAAAA';
}
const foobar: IExampleInterface<typeof foo> = {
bar: foo,
}
const baz = foobar.bar();
如果可以选择泛型推断,则typeof foo
将是多余的。
答案 1 :(得分:0)
你太努力了。 TypeScript具有称为类型推断的功能,它将免费为您完成此操作。放下as IExampleInterface
,它将“正常工作”
function foo(): string {
return 'AAAAAAA';
}
const foobar = {
bar: foo,
}
const baz = foobar.bar();
baz; // Baz has type "string"