## Notes
One difference is with hoisting.
## TypeScript
Components created from expressions can be typed:
```typescript
const MyComponent: React.FC = () => <h1>Hello, world!</h1>
```
But function declarations cannot
```typescript
// is invalid!
function MyComponent(): React.FC {
return <h1>Hello, world!</h1>
}
```
Instead, function declarations declare the return type
```typescript
function MyComponent(): React.ReactNode {
return <h1>Hello, world!</h1>
}
```
## Props
The following are basically the same
```typescript
type Props = {
name: string
}
const MyExpressionComponent: React.FC<PropsWithChildren<Props>> = ({name, children}) => <h1>{children}, {name}!</h1>
function MyDeclaredComponent({ name }: Props): React.ReactNode {
return <h1>Hello, {name}!</h1>
}
```