【问题标题】:typescript generics: what does <T,> mean?打字稿泛型:<T,> 是什么意思?
【发布时间】:2021-04-07 03:44:20
【问题描述】:

我尝试理解代码(React 应用程序的一部分):

interface SearchProps<T> {
  className?: string;
  value?: T;
  options?: T[];
  onChange?: (event: object, value: T | string, reason: string) => void;
  onInputChange?: (event: object, value: string, reason: string) => void;
  onClear?: () => void;
  renderOption?: FC<T>;
  getOptionLabel?: (option: T) => string;
}

interface TranslatedSearchProps<T> extends SearchProps<T> {
  t?: TFunction;
}

export const PureSearch = <T,>({
  className,
  value,
  options,
  onChange,
  onInputChange,
  onClear,
  renderOption,
  getOptionLabel,
  t = (key: string) => key,
}: TranslatedSearchProps<T>) => {
  return (
    <Autocomplete
      className={className}
      freeSolo
      disableClearable
      options={options || []}
      value={value}
      onChange={onChange}
      onInputChange={onInputChange}
      renderInput={SearchAppBar(t, onClear)}
      renderOption={
        renderOption ||
        ((option: T) => <ListItemText primaryTypographyProps={{ variant: 'h6' }} primary={option} />)
      }
      getOptionLabel={getOptionLabel || ((o: T) => `${o}`)}
    />
  );
};

【问题讨论】:

  • &lt;T&gt;一样,只是在React文件中解析器无法从没有逗号的JSX标签中分辨出来。
  • 这能回答你的问题吗? In Typescript what does <T> mean?
  • @buzatto 我不确定这是一个有效的欺骗目标,问题已经提到了泛型,并且特定的语法是 React 特有的。

标签: reactjs typescript


【解决方案1】:

在 JS 的几乎所有地方,您都可以在列表样式声明中留下一个尾随逗号,解析器将忽略它。 [0,1,2,][0,1,2] 给出相同的结果,{ a: true, }{ a: true } 相同,等等。

正如 Jared Smith 所评论的,在这种情况下,逗号向解析器说明这是一个类型参数,而不是 JSX 标记。但通常情况下,这不会影响执行。

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 2020-02-13
    • 2019-11-12
    • 2019-11-15
    • 2021-04-24
    • 2020-01-01
    • 2021-04-21
    • 2022-06-17
    相关资源
    最近更新 更多