与 React/Vue 结合
TS 与框架结合时,主要工作是给组件 props、事件、状态、API 响应标注类型。
React + TS
- 函数组件:
function Card({ title }: { title: string })或用 React.FC - useState 泛型:useState<number>(0)
- 事件类型:React.ChangeEvent<HTMLInputElement>
- ref 类型:useRef<HTMLInputElement>(null)
Vue 3 + TS
defineProps 泛型:defineProps<{ title: string }>();ref 泛型:ref<number>(0)。
代码示例
// React + TS
import { useState, type ChangeEvent } from "react";
interface TodoItem { id: number; text: string; done: boolean; }
function Todo({ item }: { item: TodoItem }) {
const [checked, setChecked] = useState(item.done);
return (
<label>
<input type="checkbox"
checked={checked}
onChange={(e: ChangeEvent<HTMLInputElement>) =>
setChecked(e.target.checked)} />
{item.text}
</label>
);
}
// Vue 3 + TS
// <script setup lang="ts">
// interface Props { title: string; count?: number }
// const props = defineProps<Props>();
// </script>