打字稿动态输入属性

时间:2020-09-11 07:33:25

标签: reactjs typescript

考虑到我有一个输入元素,我正在向其动态传递属性

<input 
{...props}
/>

这里的道具可能包括也可能不包括某些属性

   <Input
        label="Searchable"
        type="checkbox"
        checked={this.state.searchable}
        onChange={() =>
          this.setState({ searchable: !this.state.searchable })
        }
      />

我上面的道具会是什么类型?

2 个答案:

答案 0 :(得分:0)

由于缺乏详细信息而无法完全理解您的问题,但这是您要查找的内容:

这里所有字段都是可选的,您可以根据用例修改它们的类型, 例如,

  • 如果标签可以是A,BC中的任何一个,则使其成为联合类型
  • 与类型相同
type InputProps = {
  label?: string
  type?: string
  checked?: boolean
  onChange?: () => void
}

答案 1 :(得分:0)

如果我对您的问题理解正确,那么您在问对象是什么类型的,该对象在创建Input时作为概率传递。

在这种情况下,它将是“:any”或更具体的“:object”。不是原始类型的所有内容都具有类型对象。

更多详细信息: https://www.typescriptlang.org/docs/handbook/basic-types.html#object

理想情况下,您为Input类或函数创建了一个接口,仍然可以像现在一样传递它们。如果不需要,您还可以将某些道具设为可选。

示例:

//input.ts
export interface IInputProps {
  label: string;
  type: string;
  checked?: boolean;
  onChange: () => void;
}

export default function Input(props: IInputProps) {
//...
const label:string = props.label;
//...
}