簡體   English   中英

使用Array.map(TypeScript)返回通用數組

[英]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"]);

在這種情況下, TMooable{ foo: bar }不滿足它,這就是你需要輸入Mooable原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM