请考虑以下示例代码:
open
如果interface EntrySettings<T> {
create: (index: number) => T;
evaluate: (entry: T) => number;
}
function createEntry<T>(settings: EntrySettings<T>): T {
return settings.create(0);
}
// return type is "string"
createEntry({
create: () => "foobar",
evaluate: entry => entry.length,
});
// return type is "unknown"
createEntry({
create: i => "foobar",
evaluate: entry => entry.length,
});
方法不使用其参数,则返回类型有效,但是当它使用时,TypeScript似乎不知道从何处推断create
类型。
字段顺序似乎对此行为没有任何影响。
有什么方法可以正确地以当前形式实现? (未明确指定T
或函数的自变量)