如何在React中为useState正确指定TypeScript类型?
你好,同事们!我开始学习React中的TypeScript,立刻遇到了useState hook的类型化问题。
我有一个简单的表单组件,需要存储一个包含name和age字段的对象。我尝试这样做:
```typescript
const [user, setUser] = useState({ name: '', age: 0 });
```
看起来能工作,但当我想把这个state传递给另一个组件或函数时,TypeScript报错。然后我尝试显式指定类型:
```typescript
interface User {
name: string;
age: number;
}
const [user, setUser] = useState({ name: '', age: 0 });
```
现在能工作了,但我不明白:是否总是需要显式写出类型?如果我的state是数组呢?或者如果state可能为null?我试过这样:
```typescript
const [items, setItems] = useState([]);
// TypeScript推断为never[],我无法添加元素!
```
还有一个问题:如果我把setUser函数传递给子组件,如何正确为其指定类型?我试过写`setUser: