Javascript 联合测试<;{[id:string]:Book},string[]>;这是什么? export const getSearchResults=函数(状态$:可观察){ 返回组合测试( 州$.let(getBookEntities), state$.let(GetSearchBookId) ) .map(([entities,id])=>ids.map(id=>entities[id]); };
我需要解释的是这句话:Javascript 联合测试<;{[id:string]:Book},string[]>;这是什么? export const getSearchResults=函数(状态$:可观察){ 返回组合测试( 州$.let(getBookEntities), state$.let(GetSearchBookId) ) .map(([entities,id])=>ids.map(id=>entities[id]); };,javascript,angular,redux,rxjs,ngrx,Javascript,Angular,Redux,Rxjs,Ngrx,我需要解释的是这句话: export const getSearchResults = function (state$: Observable<State>) { return combineLatest<{ [id: string]: Book }, string[]>( state$.let(getBookEntities), state$.let(getSearchBookIds) ) .map(([ entities, ids ]) => i
export const getSearchResults = function (state$: Observable<State>) {
return combineLatest<{ [id: string]: Book }, string[]>(
state$.let(getBookEntities),
state$.let(getSearchBookIds)
)
.map(([ entities, ids ]) => ids.map(id => entities[id]));
};
那到底是什么?我以前从未在任何地方见过它。更糟糕的是,我猜某种数组被用作属性名。另外,万一你在我头上说,有没有这个名字,我可以谷歌它做进一步的研究?它来自ngrx示例。谢谢 行
被称为菱形符号。这意味着函数“combineLatest”接受您在菱形中定义的泛型类型的参数
所以它的意思是“将一个具有字符串键和Book类型的值的对象作为第一个参数,并将一个字符串值数组作为第二个参数”
参数:
(state$.let(getBookEntities),state$.let(GetSearchBookId)
第一个参数应该是{[id:string]:Book}
类型,第二个参数必须是数组[]
类型
一般语法如下所示:
<{ [id: string]: Book }, string[]>
函数标识(arg:T):T{
返回arg;
}
函数标识为任何类型T,接受类型T的参数并返回T
示例用法可能如下所示:
function identity<T>(arg: T): T {
return arg;
}
var foo=identity(“你好”);
函数标识采用string参数,因为您将其定义为string,但您可以将此函数用于在此处指定的任何类型。它的返回类型为string,只返回传递的参数“hello”
(另见)
希望这能帮助你理解
它与Java中的泛型类型相同。这是一个TypeScript索引签名。在文档中搜索它:涉及的概念太多,无法在单个答案中为您提供全面的解释。根据您对静态类型的熟悉程度,您需要阅读有关参数化(又称泛型)的内容TypeScript中的类型和结构类型。@cartant此文档确实有帮助,但很好,因为他们给出的示例太糟糕了。
接口StringArray{[index:number]:string;}
很糟糕,因为它没有真正显示特殊的用例场景。
var foo = identity<string>("hello");