typescript 如何检查元素类型

x7rlezfr  于 2023-05-01  发布在  TypeScript
关注(0)|答案(2)|浏览(128)

I need help)
enter image description here

return (
        <ButtonWrapperStyled>
            <input {...getInputProps()} />
            <Button {...getRootProps()}>Загрузить</Button>

            {files.map((file) => {//file maybe FileProps or File type
                if (file) {// How can I check file type here?
                    return <div>{file.fileId}</div>
                } else {
                    return <div>{file.fileId}</div>
                }
            })}
        </ButtonWrapperStyled>
)

我输入了数组,它可能是FileProps或File类型。如何在www.example中正确检查 www.example.com
我解决不了这个问题

toe95027

toe950271#

您需要使用类型保护类型保护和区分类型

type File = {
  fileId: number;
};

type FileProps = {
  name: string;
  size: number;
};

const files: (FileProps | File)[] = [];

files.map((file) => {
  if ('fileId' in file) {
    return <div>{file.fileId}</div>;
  } else {
    return <div>{file.name}</div>;
  }
}, []);
uoifb46i

uoifb46i2#

// This option doesn't work, why?
{files.map((file) => {
    if (file?.fileId) {
        return <div>{file.fileName}</div>
    } else {
        return <div>{file.name}</div>
    }
})}
//This option works
{files.map((file) => {
    if ('fileId' in file) {
        return <div>{file.fileName}</div>
    } else {
        return <div>{file.name}</div>
    }
})}

相关问题