gpt4 book ai didi

javascript - typescript 检查值是否为字符串

转载 作者:行者123 更新时间:2023-12-05 00:30:25 27 4
gpt4 key购买 nike

我有一个组件:

export type IDAta = string | number | null;

interface IDAta {
data?: string | number | null;
verify: boolean;
}

const App: React.FC<IDAta> = ({
data = '',
verify = true,
}) => {

if ((data || data === 0) {
return (
<div>
{verify && isText(data) ? (
<Child text={data} />
) : (
data
)}
</div>
);
}

};

export default App;

isText 和 Child 组件期望参数仅为字符串,但这样做 verify && isText(data)然后我在 typescript 中遇到错误,例如 Type 'number' is not assignable to type 'string'. .这可以解决如下:

{
verify && typeof data === 'string' && isText(data) ? (
<Child text = {data as string}/>
) : (
data
)
}

我不确定这个解决方案是否可以,因为 typeof data === 'string'isText 中的逻辑加倍看起来像这样的函数:

const isText = (data: string) => {
return typeof data === 'string';
};

问题:解决上述问题的最佳解决方案是什么?

最佳答案

一个 type guard/predicate function :

function isText(data: any): data is string {
return typeof data === 'string';
};

关于javascript - typescript 检查值是否为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68982261/

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