javascript - 如何使用 react typescript 输入 map 方法?

标签 javascript reactjs arrays typescript mapping

我有一个映射方法并期望它返回一个新数组。我遇到了一个错误

Property 'id' does not exist on type 'never'

我认为这是因为我没有输入map方法变量。我该怎么做?

type Props = {
  authors: [];
  onFinish: () => {};
};

    const NewTask: FC<Props> = ({ authors, onFinish }) => {
    return (
      <select
        onChange={(e) => setAuthor(e.target.value)}
        defaultValue="select"
      >
        <option value="select" disabled>
          Select Author
        </option>
        {authors.map((author) => (
          <option key={author.id} value={author.author_name}>            // author keys are error sublimed
            {author.author_name}
          </option>
        ))}
      </select>
      )
    }

最佳答案

您已将 author 声明为 [] 类型。

作为 Javascript 值,[] 是一个文字空数组,可以添加任何值。

作为 Typescript 类型,[]tuple – 具体来说,它是一个空元组,永远不能包含任何类型的任何值。

当您迭代authors时...

authors.map((author) => { ... })

... Typescript 根据 authors 的类型推断 author 的类型。由于您已声明 authors 不包含任何值,因此它正确地警告您 author 具有 never 类型,因此 Property 'id ' 在类型“从不”上不存在

正如其他人指出的那样,您只需要为作者提供适当的类型,例如

type Author = {
  id:          string;
  author_name: string;
};

type Props = {
  authors:  Author[];
  onFinish: () => void;
};

关于javascript - 如何使用 react typescript 输入 map 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76117549/

相关文章:

javascript - 我无法安装我的项目包

java - IOUtils.toByteArray() 的内存不足错误

java - 如何获取txt到数组的特定长度

javascript - js中的树形 View (纯HTML/CSS/JS)问题

php - Drupal 7 AJAX 通过 hook_menu 调用

javascript - 非常基本的 JavaScript : Change HTML ID

reactjs - 如何设置不同表格ag-grid的样式?

javascript - React useState 切换单个按钮

node.js - npm start 正在启动 server.js 而不是我的 React 应用程序,我如何使用它来启动我的应用程序?

arrays - 在 ruby​​ 中巧妙地将散列数组转换为 CSV