gpt4 book ai didi

typescript - 为什么 TypeScript 将过滤后的字符串数组解释为字符串 | bool 数组

转载 作者:行者123 更新时间:2023-12-02 16:06:55 25 4
gpt4 key购买 nike

我有下面的表达式

[isProduction() && '/prod-path', 'first', 'second'].filter(Boolean)

TypeScript 不同意这是一个字符串[]。谁能告诉我为什么?

最佳答案

.filter 函数重载了结果的返回值,如下所示

filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[];

由于您的数组是 T == (string | boolean)[] 类型,它将返回该类型。但是,您可以使用类型保护来更改返回类型,例如

function isNotBool<T>(argument: T | boolean): argument is T {
return typeof argument !== "boolean"
}

const test:string[] = [isProduction() && '/prod-path', 'first', 'second'].filter(isNotBool);

关于typescript - 为什么 TypeScript 将过滤后的字符串数组解释为字符串 | bool 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69159319/

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