gpt4 book ai didi

typescript - 如何在 Typescript 中映射可能为空的数组

转载 作者:行者123 更新时间:2023-12-03 08:54:43 26 4
gpt4 key购买 nike

我有一个函数,其参数可以是空数组或带有字符串的数组。

所以我用 [] | string[] 的联合类型来处理这个问题

然后,在函数内部,我检查 array.length 是否 > 0,如果是,则映射参数。

type Kennel = [] | string[]

const petDogs = (kennel: Kennel) => {
if (kennel.length > 0){
return kennel.map((name:string)=>name)
} else {
return "no doggies to pet"
}
}

但是,在编译时,我收到错误

Cannot invoke an expression whose type lacks a call signature. Type '(<U>(callbackfn: (value: never, index: number, array: never[]) => U, thisArg?: any) => U[]) | (<U>(callbackfn: (value: string, index: number, array: string[]) => U, thisArg?: any) => U[])' has no compatible call signatures

我尝试过使用函数重载,但没有解决编译错误。

示例:

interface PetDogs {
(kennel: []): string;
(kennel: string[]): string[];
}

最佳答案

[]tuple type ,这适用于不同类型的用例。 string[]是数组类型,空数组仍然是string[]类型。您的代码可以正常运行而不会出现编译错误:

type Kennel = string[]

const petDogs = (kennel: Kennel) => {
if (kennel.length > 0){
return kennel.map((name:string)=>name)
} else {
return "no doggies to pet"
}
}

petDogs([]);
petDogs(["Fido", "Doggo"]);

关于typescript - 如何在 Typescript 中映射可能为空的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56346603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com