0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TypeScript版Propsの受け渡し

Posted at

TypeScript版Propsの受け渡し

React感覚でPropsの受け渡しをした際にうまくいかなかったので対処法をメモしてみた

ReactでのPropsの受け渡し

親コンポーネント

Main.jsx
import Child from "./Child";

export default function Main() {
  const text: string = "I'm Happy!";

  return <Child sendText={text} />;
}

子コンポーネント

Children.jsx
export default function Child(props) {
  return <div>{props.sendText}</div>;
}

TypeScriptで同様の実装をする

Main.tsx
return <Child sendText={text} />

sendTextにて以下のエラーメッセージが発生する

Type '{ sendtext: string; }' is not assignable to type 'IntrinsicAttributes'.
  Property 'sendtext' does not exist on type 'IntrinsicAttributes'.

エラー対処

これは型の定義が不十分のために起こる。
Reactは型推論が効いているためこのエラーは発生しない。

なのでPropsの型を定義してあげれば問題は解決する

Main.tsx
import Child from "./Child";

export default function Main() {
  const text: string = "I'm Happy!";

  return <Child sendText={text} />;
Children.tsx
import { PropsType } from "./PropsType"

export default function Child(props:PropsType) {
  return <div>{props.sendText}</div>;
}
PropsType.ts
export interface PropsType{
  type sendText:string;
}

Propsが複数ある場合は型定義の記述を増やせば問題なし

おわり

IntrinsicAttributesこの見慣れない単語にあそばれた、、、
ググってもそれっぽい記事なかったので備忘録として残します。

(間違いある場合はご指摘いただきたいです。)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?