export function getBlank<T extends { results: any[] }>(): Observable<T> {
const response: T = { results: [] };
return of(response);
}
编译失败
Type '{ results: undefined[]; }' is not assignable to type 'T'.ts(2322)
请帮助,这是怎么了?
答案 0 :(得分:4)
export function getBlank<T extends { results: any[] }>(): Observable<T> {
const response: T = { results: [] };
return of(response);
}
此函数中的代码必须通过任何用户提供的扩展了T
的类型{ results: any[] }
的类型检查,例如以下代码:
const o = getBlank<{result: any[]; moreResults: any[]}>();
但是对于此T
,此分配无效,因为缺少moreResults
:
const response: T = { results: [] };
通常,除非在通用函数的主体中创建的任何变量都不能使用通用参数T
,除非您使用构造函数或通常作为参数提供的其他函数,声明为返回对任何可能的T
进行适当初始化的值。