![](/img/trans.png)
[英]Angular Typescript On Array.map is returning “”this.array.map is not a function"
[英]Returning a generic array using Array.map (TypeScript)
我寫了一個函數,它獲取一個字符串數組,並將其轉換為T數組:
interface Fooable {
foo: string;
}
function simplifiedExample<T extends Fooable>(bars: string[]): T[] {
return bars.map(bar => {
return {
foo: bar
}
})
}
但是函數第一行中的“bars”一詞用紅線標出,表示:
TS2322:類型'{foo:string;} []'不能賦值為'T []'。 類型“{foo:string}”不能分配給“T”類型。
我怎樣才能使它工作?
你需要輸入斷言返回的Fooable
來輸入T
:
function simplifiedExample<T extends Fooable>(bars: string[]): T[] {
return bars.map(bar => {
return {
foo: bar
} as T;
})
}
( 游樂場代碼 )
原因是T
不是Fooable
,它只是擴展它但可能有其他屬性,例如:
interface Mooable extends Fooable {
moo: string;
}
simplifiedExample<Mooable>(["a", "b", "c"]);
在這種情況下, T
是Mooable
但{ foo: bar }
不滿足它,這就是你需要輸入Mooable
原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.